Linux基础教程1

命令的组成

命令字 选项 参数
ssh 用户名@IP地址或主机名
sshd 服务必须打开
service sshd status //查看sshd服务状态
cd  //切换目录
cd ..   //返回上一级目录
cd -    //返回上一次所访问的目录
cd ~   //返回家目录
pwd //打印当前目录
相对路径:只针对当前所在目录生效
绝对路径:必须以根作为起始
ls  //列出当前目录下的文件和文件夹
-l  //列表显示
-h  //人性化显示大小(K,MB,GB)
-t  //按时间进行排序
-a  //显示全部内容包含隐藏文件
--help
查看文件
小文件
cat //正序查看
tac //倒序查看
大文件
more
less    //支持查找  /关键字
head    //查看文件的头部默认10行
-n5 //精确显示行数
tail    //查看文件的尾部默认10行
-f  //实时查看
touch
1.创建文件
2.修改文件时间戳
-a  //修改访问时间
-m  //修改更改时间
stat    //查看文件属性
Access: 2016-09-12 11:27:38.316999675 +0800 
//最近一次的访问时间
Modify: 2016-09-12 11:27:38.316999675 +0800
//最近一次的修改时间
Change: 2016-09-12 11:27:38.316999675 +0800
//最近一次属性修改时间
file    //查看文件类型
ACSII类型 //普通的文本文件
rm  //删除文件
-f  //强制删除不提示
-i  //交互式删除(带提示)
-r  //删除目录
-rf //慎用!!!
mkdir   //创建目录
-p  //递归创建
rmdir   //删除空目录
通配符
*   //匹配所有之后的任意字符
?   //匹配一个任意字符
{}  //创建时匹配多个 相连.. 非相连 ,
cp 源文件 目标位置 //复制并粘贴
-p  //保持源文件属性
-r  //复制目录
scp 源文件 目标位置    //复制非本地的文件,(源和目标都可以远程)
例:scp 用户名@IP地址:绝对路径 目标位置
scp root@172.25.0.11:/tmp/file1 /root/Desktop/
将远程的file1文件复制到本地root桌面上
-p  //保持源文件属性
-r  //复制目录
mv
1.移动文件
mv 源文件 目标位置
2.重命名
mv 旧名称 新名称
grep 内容 文件  //行过滤(过滤出该文件包含内容的行)
例:grep root  /etc/passwd     //显示passwd文件中包含root的行
    grep ^root  /etc/passwd //显示passwd文件中以root开头的行
    grep bash$ /etc/passwd     //显示passwd文件中以bash结尾的行
-v //反选
--color //高亮显示
管道符:命令与命令之间的链接
  |
前一个命令的输出是后一个命令的输入
cat /etc/passwd | grep root   =  grep root /etc/passwd
cut -d分隔符 -f数字 文件   //列截取
例:cut -d: -f1 /etc/passwd 
//截取出passwd文件中以:为分隔符的第一列
echo    //输入字符
>   //重定向
>>  //追加重定向
2>  //错误重定向(把前命令的报错信息重形象)
2>> //错误追加重定向(把前命令的报错信息追加重定向)
&>  //全部重定向(包含了正常的输出或报错的输出)
&>> //全部追加重定向(包含了正常的输出或报错的输出)

VIM

vim 三种模式:命令模式 编辑(插入)模式 结束模式
命令模式----->编辑模式 i I o O a A
编辑模式----->命令模式 Esc
命令模式----->结束模式 :
结束模式
:w  保存
:q! 不保存强制退出
:wq 保存并退出
wc  //统计文件的行数,单词数,大小
-l 行数
-c 大小
-w 单词数
type 命令字    //查看命令的类型
shell   内部命令
路径  外部命令
aliased 命令别名
帮助
            范围           用法
help          内部命令     help 内部命令
--help   外部命令     命令字 --help
man      命令和文件    man 命令字或文件名
info        同man         info 命令字或文件名
ifconfig    //查看所有的网络信息
ifconfig eth0   //只查看eth0这块网卡的信息
1.ifconfig eth0 192.168.1.1 //修改eth0这块网卡的IP地址
立即生效但是并不永久生效(重启机器或重启网络服务时会还原)
2.cd /etc/sysconfig/network-scripts/ 网络信息目录
修改配置文件,不会立即生效需要重启机器或重启网络服务
3.setup //使用系统工具相当于修改配置文件
4.图形化界面(NetworkManager服务)
service network restart //重启网络服务

练习:

使用正序和倒序的方式查看/etc/hosts文件
从/etc/passwd文件当中,以高亮显示的方式过滤出带root的字符串的行
从/etc/passwd文件当中,以高亮显示的方式过滤出带root的字符串的行并截取
出该行以冒号为分割的第三段内容
使用echo方式将任意字符重定向和追加重定向的方式加入到文件/tmp/file
使用vim编辑器创建/tmp/test文件,输入任意字符保存退出
cat /etc/shadow 文件,并从中截取以冒号进行分割的第6列
从/etc/passwd中过滤出不带student和root并且不以nologin结尾的行

时间

date    //查看系统时间
date +%H:%M     //查看小时分钟
date "+%D %H:%M"    //查看月-日-年 时:分
date "+%Y-%m-%d %H:%M"  //查看年-月-日 时:分
date -s "2016-1-1 10:20:29" //修改日期及时间(需要root权限)
hwclock //查看硬件时间
hwclock --systohc   //以系统时间为基准,来同步到硬件时间
hwclock --hctosys   //以硬件时间为基准,来同步到系统时间
cal     //查看日历
cal 2015    //查看全年的日历
cal 9 2015  //查看2015年9月分的日历
rhel7
timedatectl //查看时区
timedatectl list-timezones  //查看支持的时区
timedatectl set-timezone Asia/Shanghai //设置时区

用户和组

/etc/passwd //用户信息配置文件
/etc/shadow //用户密码及密码策略
/etc/group       //用户组信息
/etc/gshadow    //组密码信息及策略相关
/etc/default/useradd    //创建用户时默认配置信息
/etc/skel/*      //skel这个目录存放了家目录默认的相关配置文件(磁盘配额)
/etc/login.defs //用户和组默认的配置信息
/etc/shells     //记录了合法的shell版本
/etc/passwd
root:x:0:0:root:/root:/bin/bash
以:进行分割,分为7个字段
1.用户名
2.用户密码占位符
3.UID   用户唯一标示符
4.GID   组的唯一标示符
5.说明信息
6.该用户的家目录
7.登录时使用的shell:命令解释器
/sbin/nologin   //不能通过终端登录系统
UID范围
                 rhel6               rhel7
超级用户      0                     0
系统用户    1-499          201-999
普通用    500-60000   1000-60000
2^16-1=65535
/etc/shadow 对root无效
root:$6$MdYyXaUN$8qjG/vtr4IqwBc/:17057:0:99999:7:::
以:进行分割,分为9个字段
1.用户名
2.加密密码
3.最近一次变更密码的日期:天数,以197011日开始计算
4.最短密码有效期(密码不可变动的天数)
5.最长密码有效期(密码需要重新变更的天数)
6.密码需要变更前几天提醒
7.密码过期后帐号的宽限时间(密码失效日)
8.帐号的失效日期:天数,以197011日开始计算
9.保留字段
/etc/group  //用户组信息
以:进行分割,分为4个字段
root:x:0:
1.组名
2.组密码占位符
3.GID  组的唯一标示符
4.组成员
/etc/gshadow    //组密码信息及策略相关
以:进行分割,分为4个字段
root:::
1.组名
2.组密码 开头!表示无合法密码,没有组管理员
3.该组管理员的用户名
4.组成员
/etc/default/useradd    //创建用户时默认配置信息
GROUP=100       //预设组
HOME=/home      //默认家 lost+foun目录的所在位置
INACTIVE=-1     //代表shadow第7栏 -1代表不启用,
EXPIRE=         //帐号的失效日期,shadow第8栏
SHELL=/bin/bash     //默认使用的shell
SKEL=/etc/skel      //用户家目录默认内容数据参考目录
CREATE_MAIL_SPOOL=yes   //是否主动创建该用户的邮箱
/etc/skel/*   //skel这个目录存放了家目录默认的相关配置文件(磁盘配额)
ll -a /etc/skel
total 36
drwxr-xr-x.   4 root root  4096 Jul  2  2015 .
drwxr-xr-x. 116 root root 12288 Sep 13 13:52 ..
-rw-r--r--.   1 root root    18 Jul  9  2013 .bash_logout
-rw-r--r--.   1 root root   176 Jul  9  2013 .bash_profile
-rw-r--r--.   1 root root   124 Jul  9  2013 .bashrc
drwxr-xr-x.   2 root root  4096 Jul 14  2010 .gnome2
drwxr-xr-x.   4 root root  4096 Jul  2  2015 .mozilla
/etc/login.defs //用户和组默认的配置信息
MAIL_DIR     /var/spool/mail    //默认的邮箱位置
PASS_MAX_DAYS   99999   //代表shadow第5栏
PASS_MIN_DAYS   0   //代表shadow第4栏
PASS_MIN_LEN    5   //密码的最小长度
PASS_WARN_AGE   7   //代表shadow第6栏
UID_MIN         500 //普通用户最小UID
UID_MAX         60000   //普通用户最大UID
GID_MIN         500 //普通组最小GID
GID_MAX         60000   //普通组最大GID
CREATE_HOME     yes //在创建用户时不指定家目录是否默认创建
UMASK           077 //默认权限有关,最大权限-UMASK值=默认权限
USERGROUPS_ENAB yes 
//删除用户时是否删除当前用户默认组,该组没有其他成员
ENCRYPT_METHOD SHA512   //使用SHA512加密方式
/etc/shells //记录了合法的shell版本
rhel6
/bin/sh
/bin/bash
/sbin/nologin
/bin/dash
/bin/tcsh
/bin/csh
rhel7
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
/bin/tcsh
/bin/csh
用户和组相关的操作
useradd 用户名 //创建新用户
-u  //指定UID
-g  //指定默认组
-G  //指定附属组
-c  //设定说明信息
-d  //指定家目录
-s  //指定shell
passwd 用户名  //更改用户密码
普通用户更改自己密码长度限制:小写,大写,数字,特殊符号任意选3项
不能常用的单词
echo uplooking | passwd --stdin tom
//把用户tom的密码设定成uplooking(快速设定密码)
groupadd 组名 //创建组
-g  //指定GID
-r  //创建系统组
id 用户名  //用户信息
UID  默认组  附属组
groups 用户名  //查看该用户属于那些组
usermod 『参数』 用户名
//更改现有用户的信息,6系统必须以这个语法格式,7系统语法可以换位置
-c  //说明信息
-u  //UID
-g  //默认组
-G  //指定附属组
-aG //添加附属组
-s  //修改shell
-d  //修改家目录 
groupmod //修改组信息
-g  //GID
-n 新名   //修改组的名字
userdel 用户名 //删除用户
-r  //把用户相关连的家目录和邮箱一起删除
groupdel 组名 //删除空组
chage 用户名   //修改用户的密码策略
chsh 用户名    //修改用户登录使用的shell
-l      //列出目录系统可以使用的shell

练习

添加carol用户
添加tom和kevin组,指定gid为1011,1012
添加ivy用户,指定默认组为tom,附属组为carol组
添加mary用户,指定uid为1002
变更carol用户默认组为ivy组,附属组为tom组和mary组
给carol用添加附属组为kevin
删除ivy用户和carol用户
删除tom组和kevin组

history  //查看命令历史

权限

UGO,特殊权限,ACL权限
UGO权限
U:user  G:group O:other(其他)
-rw-rw----. 1 abc     mail 0 Sep 14 10:40 abc
drwxr-xr-x.  17 root root  3540 Sep 14 10:26 dev
- rw- rw- ---
第一个-代表文件格式
-:代表普通文件
d:目录文件
l:链接文件
b:块设备文件
c:字符设备文件
p:管道文件

第2-4代表所有者的权限
第5-7代表所属组的权限
第8-10代表其他人的权限
r(read),w(write),x(execute),-空

rwx
000=---=0
001=--x=1
010=-w-=2
100=r--=4
111=rwx=7
chmod   //更改权限的命令
u:拥有者
g:所属组
o:其他
+:添加
-:删除
=:赋予
例:chmod u+x /tmp/history    
//给history这个文件的拥有者添加执行的权限
chmod 777 /tmp/history
//给history这个文件的第一个7代表了U的权限,第二个7代表了G的权限,第三个7代表O的权限,(使用数字相当与赋予)
练习:创建3个文件,分别把他们的权限修改成755644421,并查看该数字对应的权限,进入文件添加,修改,查看是否可以成功
chmod -R 777 目录 //该目录下的所有目录及文件的权限都会被修改
chown 拥有者.所属组 文件或目录 //更改某个文件的拥有者和所属组
chgrp 所属组 文件或目录
例:chown student.student /tmp/history
默认权限
最大权限-UMASK=默认权限
用户         最大权限   umask值   默认权限
root  文件   666  002  664 -rw-rw-r--
user  文件   666      022  644 -rw-r--r--
root  目录   777  002  775 drwxrwxr-x
user  目录   777  022  755 drwxr-xr-x
特殊权限
suid sgid sticky
suid:运行命令时临时拥有文件拥有者的权限
chmod u+s 文件名   //赋予文件suid
sgid:临时拥有所属组的权限(用的非常少)
chmod g+s 文件名
sticky:当sticky备设定后,只有root和目录的拥有者才可以删除
作用范围:目录
任意人可以在此目录进行添加修改但是只有root或者目录的拥有者才可以删除
chmod +t 目录名
ATTR权限
lsattr 文件名  //查看该文件的attr权限
-d  //显示目录的attr权限
i:不可执行删除,改名,连接,写入,(对root生效)
A:访问时间不修改,用于网页,对于计算机有优化的作用
S:同步写入磁盘
a:只能增加数据,不能删除和修改数据(对root生效)
s:彻底删除,无法挽回
u:删除可挽回

chattr +i 文件名 //添加attr权限,删除-号
ACL权限
file文件root:rwx tom:rw- student:r moon:r-x
拥有者:rwx
所属组:rw-
其他人:r--
ACL:r-x
用于三种以上的权限
getfacl 文件名 //查看acl权限
file: tom   //文件名
owner: root //文件拥有者
group: root //文件所属组
user::rw-   //拥有者的权限
group::r--  //所属组的权限
other::r--  //其他人的权限
mask::rw-   //默认支持的最大权限
user:moon:rwx   #effective:rw-  //实际权限为读写

setfacl -m u:用户名:权限 文件名 //修改一个文件的acl权限
例:setfacl -m u:student:rw- file 
setfacl -m m::权限 文件名    //修改mask值
setfacl -x u:用户名 文件名    //删除该用户的acl权限
setfacl -x g:组名 文件名     //删除改组的acl权限
setfacl -x m 文件名        //删除mask值

setfacl -b 文件名      //清空acl权限
sudo:任务指派
visudo  //修改sudo的配置
谁  在哪=(以谁的身份)  执行什么命令(绝对路径)


student         ALL=(root)      /usr/sbin/useradd
为student赋予以root身份使用useradd命令
sudo useradd alx
sudo -k     //清除密码缓存

student         ALL=(tom)       /bin/touch
为student赋予以tom身份使用touch命令
sudo -u tom touch file10

文件系统

windows系统FAT16,FAT32,NTFS(簇)
linux系统ext2,ext3,ext4。rhel7系统xfs
文件系统的组成
索引(inods)
块(block)
超级块(superblock)
索引:存放文件的属性
块:保存真实数据
超级块:记录整个文件系统的信息,包含了索引和block的总量,使用量,剩余量等
startx  //在字符登录时使用此命令会进入图形化界面(装了x图形)

linux系统结构目录树

/   //根目录
/boot   //开机所需文件--内核,开机菜单及所需配置文件
/dev    //设备与接口以文件的形式保存在此目录下
/etc    //配置文件
/home   //普通用户家目录
/bin    //单用户模式下还能使用的操作命令
/lib    //开机时用到的函数库及/bin和/sbin下面命令要调用的函数
/sbin   //开机过程中所需文件和一些命令
/media  //默认挂载目录
/opt    //第三方软件
/root   //超级用户的家目录
/srv    //一些网络服务的数据目录
/tmp    //临时共享目录
/proc   //虚拟文件系统,如系统内核,进程,外部设备及网络状态等
/usr/local  //用户自行安装的软件
/usr/sbin   //非系统开机时所需要的软件/命令/脚本
/usr/share  //帮助与说明文件,或放置共享文件
/var        //主要存放经常变化的文件,如日志,邮箱等
/lost+found //当文件系统发生错误时,将一些丢失的文件片段存放这里

7系统里的/run 其实就是6系统/var/run目录 
//存放进程信息,系统运行所需文件

free 查看内存信息
//Mem:物理内存
//swap:虚拟内存

软硬链接

硬链接
特征
1.无法区分源文件和链接文件,他们使用的inode和block是一样的
2.创建一个硬链接,硬链接的计数会加1
3.修改其中任意一个文件,其余所有的文件都会被修改
4.不能对目录进行操作
5.不能跨文件系统
6.删除其中任意一个文件,对文件本身没有影响。删除完所有的文件才会导致文件的彻底删除

创建硬链接
ln 源文件 新文件  //创建硬链接文件,建议绝对路径
ll -i 查询block编号
软链接
1.可以区分源文件和链接文件,使用的是不同的inode和block
2.创建一个软链接,ls -l查看时会显示源文件的位置
3.修改文件属性,对其他的链接文件没有影响,链接文件的属性无法修改
4.能针对目录做操作
5.能跨越文件系统做操作
6.删除源文件,所有的链接文件都将失效,删除链接文件对源文件没有影响
作用:1.缩短路径,2.跨越文件系统
软链接相当于windows的快捷方式

创建软链接
ln -s 源文件 新文件   //创建软链接文件,建议写绝对路径

系统应用的文件:/etc/system-release
查找/搜索
whereis  which  locate  find
whereis:在固定的地方查找文件
whereis 字符串

which:命令路径,查找可执行的文件

locate:模糊查找

1.非常快
2.非实时
3.模糊查找
4.只能找文件名

每天早晨会把系统的文件读一遍,放到一个数据库文件里面:
/var/lib/mlocate/mlocate.db文件中去
更新时间
/etc/cron.daily/mlocate.cron文件规定更新时间
updatedb命令为手动更新数据库文件
新创建的文件必须跟新数据库文件才能找到

/etc/updatedb.conf这个文件里有一行配置决定了某些路径不被查找
PRUNEPATHS = “/afs /media /net /sfs /tmp /udev /var/cache/ccache /var/spool/cups /var/spool/squid /var/tmp”

find 详细查找

find 路径 查找条件 找到后的动作
查找条件:
-name  名字  
-type  类型
-user  拥有者
-group  所属组
-size  大小(-小于 +大于)
-perm  权限

找到后的动作
-exec 执行
例:find / -size +50k -exec cp {} /tmp/file \; //从根目录下找到大于50kB的文件并复制到/tmp/file目录中去
find / -size +50k -exec ls -l {} \; //从根目录下找到大于50kB的文件并列出详细信息

find /etc -size +50k >> /tmp/file3
把查找后的结构输出到/tmp/file3文件里面去

-print 将结果输出屏幕上,预设动作

打包及压缩

zip,gzip,bzip2,xz

zip 压缩后的名字 源文件或目录名

dd if=/dev/zero of=/tmp/bigfile bs=1M count=30 //创建一个30M的文件

zip /tmp/test.zip /tmp/bigfile //压缩文件
zip -r 压缩文件 文件 //将该文件追加到相应的压缩文件中
unzip -l 压缩文件 //查看压缩文件里的内容
unzip 压缩文件 //解压缩该文件

       功能                   对               比                 与tar结合使用
   压缩       解压      速度    压缩率  压缩目录        源文件       压缩        解压   
   zip      unzip      最快       高     yes        默认保留   
  gzip     gunzip      较快     较高      no         默认删除   tar -zcf    tar -zxf
 bzip2    bunzip2      较慢     很高      no         默认删除   tar -jcf    tar -jxf
   xz        unxz      最慢     最高      no         默认删除   tar -Jcf    tar -Jxf
zip
-d    //从压缩文件里面删除指定的文件
-F  //尝试修复以损坏的压缩文件
zip -r 压缩文件 文件  //将该文件追加到相应的压缩文件中
gzip
-a  //使用ASCII文字模式
-d  //解开压缩文件
-l  //查看压缩文件的内容信息
-v  //显示指令执行的过程
-1
-9
bzip2
-d  //解开压缩文件
-k  //使用此选项不会删除源文件
-V  //显示指令执行的过程
-s  //执行时降低内存的使用量
xz
-d  //解压文件
-k  //保留源文件
-f  //强制压缩,如果遇到同名的文件直接覆盖
-0到-9   //设置压缩率
tar -cf 新名称.tar 源文件     //打包如果时多个后面以空格分割
tar -tf 打包文件        //查看打包文件里的内容
tar -r 文件名 -f 打包文件  //往打包文件里追加新文件
tar -xf 包名称     //解包
打包需要注意的:tar打包路径是什么,解包的路径也时什么

bash (命令解释器)

/etc/shells

history //查看命令历史
内存中命令历史默认储存1000条,该数量是由环境变量HISTSIZE进行控制
vim /etc/profile    //该文件对全局生效

HISTSIZE=1000   //默认储存1000条
history
-c  //清空当前历史命令
-a  //将历史命令缓冲区中的命令写入历史命令的文件中
-r  //将历史命令的文件中的命令读入当前历史命令缓冲区
-w  //将当前历史命令缓冲区中的命令写入历史命令的文件中
!8  //使用第8个命令
!!  //使用上一次调用的命令
CTRL+r  //搜索最近包含字符串的命令
CTRL+l  //清空屏幕
CTRL+c  //强制中断取消
CTRL+a  //跳转到行首
CTRL+e  //跳转到行尾
CTRL+d  //关闭该终端,logout

命令别名

alias 新的命令='原命令 -选项/参数'

alias 11='ssh [email protected]'

-p  //打印已经设置的命令别名
在终端中输入临时生效
在~/.bashrc这个文件中写入对单个用户生效
在/etc/bashrc针对全局生效

tab键补全功能

单击补全命令,如果没办法补全,双击可以下时以该字符开始的文件或命令有哪些

用户登陆流程

/etc/profile
/etc/profile.d目录下的文件
~/.bash_profile
~/.bashrc
/etc/bashrc

echo $PATH //显示PATH的变量:简化命令的写法
/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
读取目录以:进行分割
PATH是有读取顺序的从左到右,
./可执行文件 //对于相对路径执行
. /etc/profile.d/test //绝对路径执行

export PATH //重新获取PATH变量

如果出像相同变量,以家目录的变量配置生效,例如别名变量名字相同,那么取家目录的配置文件生效

su //切换用户
su - student //标准切换(切换是直接返回到用户的家目录下)
su student //非标准切换(并不会返回用户家目录下,有可能拿不到自身家目录里的环境变量)

vim test //打开或新建test文件
!/bin/bash //test的文件内容
echo hello //test的文件内容
chmod +x test //给与test文件执行的权限
./test //执行test
cp test /usr/local/bin //复制

export PATH //重新获取PATH变量

bash test //使用bash命令解释器来执行该命令

vim 编辑器

i 在光标所在位进行插入
I 在光标所在位行首插入
o 在光标所在位的下方新一行插入
O 在光标所在位的上方新一行插入
a 在光标所在位的行尾插入
A 在光标所在位下一个字符插入

命令模式
yy //复制一行(光标所在位)
p //粘贴一行(光标所在位)
3yy //复制三行
dd //删除一行
2dd //删除两行
G //最后一行
5G //跳转到第5行
gg //跳转到第一行
u //撤销
ctrl+r //恢复撤销

:set nu //查看行号
:set nonu //取消行号
:s/no/yes //对光标所在第一个出现的no替换成yes
:s/no/yes/g //对光标所在行出现的所有no替换成yes g表示全行替换
:%s/no/yes //对光标所在列出现的所有no替换成yes %表示全列替换
:%s/no/yes/g //全文替换
:nohl //取消高亮
/关键字 //搜索关键字
:6 //跳转到第6行
:w 文件名 //将文档另存为filename
:r 文件名 //读取另一个文档,该文档会从光标所在下一行开始显示
:1,5 w 文件名 //将该文档的1-5行另存为新的文件里

软件安装

1.源码包安装

可制定
操作复杂,编译时间长,极易出现错误
1.下载源码包
2.进入解包目录,执行“./configure”命令,为编译做好关于本地环境(硬件和系统)的配置
3.配置成功后,执行“make”命令来进行软件的编译。(最容易出现错误)
4.编译完成后,执行“make install”名来来进行安装软件

卸载源码包

make uninstall
通常情况下安装在/usr/local目录里

RPM:红帽开发专门用来管理linux软件安装(无法解决依赖关系)
MySQL-python-1.2.3-0.3.c1.1.el6.x86_64.rpm
名字-版本号.支持的系统.64位.rpm

1.下载软件包
2.直接使用rpm命令来安装
rpm
-i //安装
-v //显示过程
-h //显示安装时标记
安装时通常使用-ivh选项
-e //卸载
-e –nodeps //忽视其依赖关系进行卸载
-q 软件包名称 //查看指定的软件是否安装
-qa //列出所有以安装的rpm软件
-ql 软件包名称 //查看指定软件包包含的文件
-qi 软件包名称 //查看软件包的详细说明
-qf 文件名 //查看该文件是属于哪个软件包
-U 软件包名称 //升级,若没有安装该软件则直接安装
-F 软件包名称 //升级,若没有安装该软件则放弃

yum 需要yum仓库 (yum用来自动解决软件包之间的依赖关系)

/etc/yum.repos.d/ //该目录下为yum仓库配置文件
配置文件必须以.repo结尾
vim /etc/yum.repos.d/server.repo

[server] //仓库名
name = rhel6.5 repos //说明信息
baseurl = http://classroom.example.com/content/rhel6.5/x86_64/dvd/ //仓库位置
enable=1 //是否启用该仓库 0代表不启用,1代表启用
gpgcheck=0 //是否需要检测 0代表否 ,1代表是

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-beta,file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
//如果为gpgcheck=1会多出密钥验证

baseurl = 仓库位置
1.本地路径 file:///content/rhel6.5…… //……为省略 第三个/代表根 (必须以绝对路径)
2.远程路径 协议://位置
http://
https://
ftp://
nfs://
安装
yum install 软件名 //安装指定的软件包
yum groupinstall 组名 //用来安装一系列的软件包
yum reinstall 软件名 //重新安装指定软件
查询
yum list //查询所有软件包
yum list installed //查看已经安装过的软件包
yum info 软件包名 //用来查看软件包的纤细信息
yum grouplist //查看系统里所有的组包
yum groupinfo 组名 //查看指定组的相关信息
升级
yum update 软件名 //用于升级该软件

卸载(一般不要使用该命令卸载/bin/touch)
yum remove 软件名 //用于卸载!!!!!慎用(这个命令会把和该软件相关的所有依赖关系包全部删除)
卸载时请用rpm -e 来卸载

配置完yum仓库后需要清理YUM缓存
yum clean all //清除缓存
yum makecache //生成缓存

进程

进程号PID
父进程PPID
pstree //查看进程树
init这个进程是所有的进程之父

查看进程:静态查看,动态查看
ps //查看启用终端进程

PID TTY TIME CMD
进程号 终端号 时间 命令

ps aux //查看所有的进程 a代表all全部 u代表user x代表没有控制终端的进程:开机过程中已经触发了的进程

USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
拥有者 进程号 CPU占用率 内存占用率 虚拟内存数 物理内存数 终端号 状态 开始时间 运行时间 命令

关于状态
S:休眠状态
R:等待运行
I:空闲状态
<:优先级较高
N:优先级较低
s:进程的领导者
l:多线程
+:前台进程

ps -ef //查看静态进程 e代表全部进程 f代表全格式罗列

UID PID PPID C STIME TTY TIME CMD
用户ID 进程ID 父进程ID cpu占用率 开始时间 终端号 此进程运行总时间 命令名

ps -le //查看进程的优先级
NI //这一列代表了优先级

pgrep 进程关键字 //只显示PID
-l //列出程序名和进程ID

pgrep -U 用户名 //查看该用户所产生的进程

pgrep -t tty1(终端) //查看由该终端产生的进程

pidof 进程名 //只显示PID

动态查看进程

top //动态查看
状态默认每3秒刷新一次,输入空格立即刷新,可以通过d来修改
P:根据CPU占用率来排序
M:根据内存占用率来排序
N:根据启用时间来排序
n:提示输入显示数量,输入5,那么同时会显示5行进程
c:切换命令名的显示,会显示详细的命令包括参数
k:提示输入PID来结束进程,默认15信号
< >:用来左右翻页

kill -9 PID //来结束进程
信号
-1:reload信号,重置信号。让服务重新加载自己的配置文件
-9:强制关闭某个进程
-15:等待程序正常退出信号,和9的区别在于数据流,强制关闭,可能数据没有写入磁盘;15信号会等数据回写完成后再关闭该进程

killall -9 进程名 //同时结束多个同名的进程
用于多个相同进程存在的情况

pkill //根据属性进行结束进程
-U //通过进程的拥有者来进行结束
-t //通过登陆的TTY来结束

who //查看当前所有的登陆用户

xkill //点谁谁死

进程优先级

1.在创建进程的时候指定优先级
nice -n 3 ping 127.0.0.1 //创建进程ping时指定优先级为3
2.调整现有的进程优先级
renice -n 5 18835 //修改PID为18835这个进程的优先级为5

优先级的范围:-20到19
优先级的数字越小代表优先级越高

注意:root可以在范围内随意更改优先级,但是普通用户只能把优先级往低调整,也就是说数字必须大于之前的数字。
普通用户在创建时不能创建优先级小于0的进程

创建后台作业的进程需要在命令后面加上&
jobs //查看后台进程
fg 1 //将后台作业调用前台
ctrl+z //将已经触发的前台作业调到后台,后台作业暂停
bg 1 //让后台作业执行

例:ping 127.0.0.1 >/tmp/ping &

日志

常用的日志
/var/log/cron //周期计划任务日志
/var/log/dmesg //开机核心侦测信息
/var/log/lastlog //系统帐号最近一次登陆信息
/var/log/maillog //邮件往来信息
/var/log/messages //系统错误信息
/var/log/secure //设计输入帐号密码的程序
/var/log/wtmp //正确登陆系统的账户信息
/var/log/btmp //错误登陆系统的账户信息
/var/log/httpd/* //不同的网络服务会使用他们自己的登陆文件来记载各自产生的信息(http)
/var/log/samba/* //samba

1.正常查看文件必须类型是ASCII的日志
2.如果类型为data日志,需要特定的命令去查看
last //查看/var/log/wtmp日志
lastb //查看/var/log/btmp日志

日志的服务:

rsyslogd //主要负责记录系统运作中,kernel或应用程序产生的各种讯息,讯息被写入系统日志
logrotate //主要在进行日志文件的轮替功能

redhat5版本日志的服务syslogd

service rsyslog restart //重启日志服务
/etc/rsyslog.conf //日志的主配置文件
选项和动作两个部分组成,两者之间必须以TAB制表符进行分割(使用空格分割无效)
选项有两部分组成,设施和级别,由点号.分割,两部分都是大小写不敏感;不同的设施和级别可以用分号;来分割
级别如果是none就说明这个设施除外

设施

authpriv //认证系统,即询问用户名和口令
cron //周期计划任务
daemon //某些系统的守护程序的syslog
kern //内核的syslog信息
lpr //打印机
mail //邮件系统
mark //定是发送消息的时标程序
news //新闻系统
user //本地用户应用程序

级别

authpriv.non
man syslog

define KERN_EMERG “<0>” /* system is unusable */
emerg:紧急
define KERN_ALERT “<1>” /* action must be taken immediately */
alert:告警,当前状态必须立即进行纠正。例如,系统数据库崩溃
define KERN_CRIT “<2>” /* critical conditions */
crit:关键状态的警告。例如,硬件故障
define KERN_ERR “<3>” /* error conditions */
err:错误
define KERN_WARNING “<4>” /* warning conditions */
warn:警告
define KERN_NOTICE “<5>” /* normal but significant condition */
notice:注意;非错误状态的报告,但应特别处理
define KERN_INFO “<6>” /* informational */
info:通报信息
define KERN_DEBUG “<7>” /* debug-level messages */
debug:调试程序时的信息

none:指示带有none级别的类型产生的信息无需送出

动作

/filename 日志文件,由绝对路径指出文件名,此文件必须事先建立;
@host 远程主机;@符号后面可以时IP地址,也可以时域名,默认在/etc/hosts文件下
* 所有用户

vim /etc/rsyslog.conf
*.info;mail.none;authpriv.none;cron.none /var/log/messages
设施.级别;设施.级别; 动作

cron.* /var/log/cron
设施.级别 动作

日志的轮询

/etc/logrotate.conf //日志轮询的主配置文件
说明
weekly //轮询周期
rotate 4 //保留4个带时间戳的文件
create //创建新文件
dateext //老的文件日期作为后缀
compress //是否需要压缩

写法
/var/log/file {
daily
rotate 4
dateext
create
}

文件位置 {
轮询的周期
保留时间戳文件的数量
老的文件日期作为后缀
创建新文件
}

说明
daily //指定转存周期为每天
weekly //指定转存周期为每周
monthly //指定转存周期为每月
size 大小 //数字 bytes默认 KB或者MB
minsize 大小 //最小多少

mail address //把转存的日志文件发送到指定的E-mail地址
notifempty //如果是空文件的话,不转存
conmpress //同gzip压缩转存格式
missingok //如果指定的目录不存在,logrotate会报错,此项用来关闭报错(忽略跳过)
1.修改日志主配置文件
/var/log/file {
daily
rotate 4
dateext
create
}

2.创建空文件
3.重启日志服务
4.修改日志轮询主配置文件 保存一年份的日志
5.测试logrotate -vf /etc/logrotate.conf

计划任务

一次性计划任务,周期性计划任务
at-3.1.10-43.el6_2.1.x86_64.rpm
一次性计划任务服务名atd
rhel6
service atd status //查看服务运行状态
service atd start //打开服务
service atd restart //重新启动服务
service atd stop //停止服务
rhel7
systemctl status atd //查看服务运行状态
systemctl start atd //打开服务
systemctl restart atd //重新启动服务
systemctl stop atd //停止服务

at 时间 日期 //设置一次性任务计划
如果只有时间代表当天
回车后会出现 at> 执行的命令(绝对路径) 回车
CTRL+d 来提交
ctrl+c 为终止

例:
at 10:00 2016-9-30 //添加一次性任务计划
at>/bin/echo hello //设置该计划的内容
ctrl+d //提交该计划

at -l //查询当前的一次性任务计划
at -d id //按照ID号删除一次性任务计划

/etc/at.deny //这个文件代表使用at的黑名单;用户名如果出现在这个文件里,该用户则不能使用at命令
/var/spool/at/ //这个目录下存放任务计划的配置文件,只要添加了at这里面会生成一个文件,删除该文件等于删除该项任务计划
/etc/init.d/atd //存放at服务文件

周期性计划任务

cronie-1.4.4-12.el6.x86_64.rpm
周期性计划任务的服务名 crond
rhel6
service crond status //查看服务运行状态
service crond start //打开服务
service crond restart //重新启动服务
service crond stop //停止服务
rhel7
systemctl status crond //查看服务运行状态
systemctl start crond //打开服务
systemctl restart crond //重新启动服务
systemctl stop crond //停止服务

配置文件 /etc/crontab
SHELL=/bin/bash //使用bash命令解释器
PATH=/sbin:/bin:/usr/sbin:/usr/bin //如果没有使用绝对路径的命令,会从这些目录中取匹配
MAILTO=root //如果出现错误发mail给root
HOME=/

For details see man 4 crontabs

Example of job definition:
.—————- minute (0 - 59) //分钟(0-59)
| .————- hour (0 - 23) //小时
| | .———- day of month (1 - 31) //日或号(每月的几号)
| | | .——- month (1 - 12) OR jan,feb,mar,apr … //月份(1-12)可以写英文
| | | | .—- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat//周几(0-6)0or7代表星期天
| | | | |
* * * * * user-name command to be executed
*代表所有,连续的1-5,间隔的1,3,5,
如果在分钟写*/2:代表每隔两分钟
如果在小时写*/2:代表每隔两小时
如果在周写*/2:代表每隔两周

crontab -e //为设置周期计划任务
crontab -l //查看当前用户的周期计划任务
进去后和vim编辑器的操作模式一样
* * * * * echo 123 >> /tmp/student //每天的每分钟输出123到/tmp/student文件里面

/var/spool/cron/* //当前目录下存放周期计划任务的缓存文件,会出现和用户名同名的文件
/etc/cron.deny //周期性计划任务的黑名单,同at,一行一个用户

root由权力给任何用户写周期计划任务
crontab -e -u 用户名 //为其他用户建立周期计划任务

每周一到周五早上9点和下午13点统计以下当前系统里由多少用户登陆着,并追加到/tmp/wc.txt文件
每隔两小时,看一个当前进程的数量,结果追加到/tmp/ps.txt文件

内核模块

uname -a //查看内核版本号
/lib/modules/2.6.32-431.el6.x86_64/kernel/ //内核模块存放位置
arch //与硬件平台有关的项目,如CPU等级,等
crypto //内核所支持的加密技术,例如md5、des等等
drivers //硬件的驱动程序,如显卡,网卡,等
fs //内核所支持的文件系统,例如ext4,nfs,等
kernel //内核的程序,内核的状态、线程等
lib //函数库
mm //内存单源有关的各项数据
net //与网络相关的协议数据,防火墙模块
sound //音效有关的各项模块

模块文件一般以.ko结尾

内核模块之间也是由依赖关系的
head /lib/modules/2.6.32-431.el6.x86_64/modules.dep //内核模块的依赖性
依赖关系文件如果丢失可以使用,depmod命令来生成此文件
查看内核模块
lsmod //查看所有的
内容包含了:1.模块名称 2.模块的大小 3.此模块是否被其他模块所使用

insmod 模块位置 //加载模块

rmmod 模块名称 //卸载,这个没有办法解决依赖关系

modprobe 模块名称 //卸载,会自动解决依赖关系
-r //和yum remove很相似,会把所依赖的模块全部卸载。!!!慎用

内核参数
开启或关闭某项功能
/proc/ //记录了内核参数

/proc/sys/net/ipv4/icmp_echo_ignore_all //这个的参数规定了是否忽略ping包
0代表关闭 1代表打开
不能用vim直接修改必须以输出重定向来修改

例:echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all //代表打开忽略ping包

创建一个一次性计划任务在22:30分为student用户创建周期性计划任务,在6月30号和12月30号的凌晨23:30分将日志文件内容追加到/tmp/log文件中去

挂载

mount -t 类型 设备或文件或远程目录 挂载的位置(目标挂载点) //标准的挂载方式
-t iso9660 代表镜像文件或者挂载CD/DVD
例如:mount -t iso9660 /dev/dvdrom /media/ //将光驱挂载到/media
大部分类型可以默认不带

-o //带选项的挂载
loop //属于选项,本地回环
remount //属于选项,重新挂载
rw //读写
ro //只读
多个选项以逗号,分割

mount //显示挂载的信息

umount 挂载点 //卸载该目录(弹出设备)

使用mount命令都是临时生效,重启后还原
永久生效需要修改配置文件/etc/fstab
vim /etc/fstab
设备 挂载点 文件系统类型 选项 是否需要备份 是否需要检测
proc /proc proc defaults 0 0

是否需要备份 0代表不备份 1代表备份; 是否需要检测0代表不检测 非0代表检测,数字越小优先级越高

修改完成后,重启或使用mount -a来让其生效

注意:挂载点一般是空目录,如果是非空的目录那么,源目录里的东西会被覆盖,只有将该目录卸载后源目录的文件才会出现

1.挂载大文件
创建一个文件 ext4
格式化 //mkfs.ext4 大文件
挂载
测试
2.挂载远程目录
mount IP地址:/content/ /media nfs
3.挂载镜像文件
mount -o loop 镜像位置 挂载点 iso9660
4.多级目录访问(和软连接相似)
mount –bind 老的目录 新的目录

df -h //查看挂载信息

开机启动流程

BIOS==>HD===>MBR==>BootLoaderh(446B),DPT(64B),55AA(2B)
BIOS:基本输入输出系统 HD:硬盘 MBR:主引导记录
BootLoaderh:引导程序
DPT:分区表
55AA:检验位

BootLoaderh==>grub stage1===>grub stage2==>grub.conf
BootLoaderh:rhel6用的是grub,rhel7用的是grub2,windows用的是ntblr
stage1:是一个指针指向了stage2
stage2:配置信息取读取grub.conf这个文件

hd(0,0):hd硬盘 第一个0第一块硬盘 第二个0第一个分区

vim /boot/grub/grub.conf
default=0 //默认菜单
timeout=5 //启动菜单超过5秒自动进入默认启动内核
splashimage=(hd0,0)/grub/splash.xpm.gz //菜单的背景图片
hiddenmenu //默认不看menu菜单
title Red Hat Enterprise Linux (2.6.32-431.el6.x86_64) //title 标题
root (hd0,0) //设置boot为根
kernel /vmlinuz-2.6.32-431.el6.x86_64 ro root=/dev/mapper/vg_rhel6-LogVol01 rd_NO_LUKS LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 KEYBOARDTYPE=pc KEYTABLE=us rd_LVM_LV=vg_rhel6/LogVol01 rd_NO_DM rhgb quiet //内核文件
initrd /initramfs-2.6.32-431.el6.x86_64.img //一个虚拟化文件系统

运行第一进程init,开始第一事件startup事件,会读取/etc/init/目录下的文件,第一个读的rcS.conf
run-level信息ock/subsys/local

init执行/etc/rc.d/rc.sysinit档案来准备软件的执行作业(网络,时区等)
init执行run-level的各个服务的启动
init执行终端仿真程序mingetty来启动login程序
等待用户登录

runlevel 0:是让init关闭所有的进程并终止系统
runlevel 1:用来将系统转到单用户模式,单用户模式只有root可以进入
runlevel 2:时允许系统进入多用户模式,单并不支持文件共享,这个模式很少用
runlevel 3:用来提供真正的多用户模式,是生产环境最常用的模式,也是服务器用的最多的默认模式
runlevel 4:一般不被系统使用,用户可以自己设计系统状态并将其应用到runlevel4阶段,自定义模式
runlevel 5:将系统初始化位专用的X window终端,图形化界面
runlevel 6:是关闭所有运行的进程并重新启动系统

读取/etc/init/rc.conf配置文件,记录开机等级相关配置文件的目录/etc/rc.d/

cd /etc/rc.d/
init.d //服务启动配置文件
rc0.d //0等级时需要关闭和启动的服务 ,以K开头的位关闭服务,以S开头为启动时开启服务
rc1.d //1等级时需要关闭和启动的服务 ,以K开头的位关闭服务,以S开头为启动时开启服务
rc2.d //2等级时需要关闭和启动的服务 ,以K开头的位关闭服务,以S开头为启动时开启服务
rc3.d //3等级时需要关闭和启动的服务 ,以K开头的位关闭服务,以S开头为启动时开启服务
rc4.d //4等级时需要关闭和启动的服务 ,以K开头的位关闭服务,以S开头为启动时开启服务
rc5.d //5等级时需要关闭和启动的服务 ,以K开头的位关闭服务,以S开头为启动时开启服务
rc6.d //6等级时需要关闭和启动的服务 ,以K开头的位关闭服务,以S开头为启动时开启服务

chkconfig –list //查看各个不同等级中,各项服务的状况
chkconfig –level 数字 服务名 off或on //修改各个等级的服务是否自启动
例:chkconfig –level 35 sshd off //在启动3和5等级的时候关闭sshd服务

vim /etc/inittab //用于rhel6的默认启动等级
id:5:initdefault: //中间的数字代表了等级

在3和5等级时最后都会运行这个脚本文件/etc/rc.d/rc.local 可以把自己想要开机是启动的命令写进去

grub菜单加密
grub-md5-crypt //回车后输入两次密码用来生成加密密码

1 ejsez$e7kFujHrJPIG376xSFL1u1

vim /boot/grub/grub.conf
在title这一行的上面加一条 password –md5 1 ejsez$e7kFujHrJPIG376xSFL1u1 来对grub菜单进行加密
如果在title这一行的下面加一条 password 那么是对进入系统时需要密码

rhel7
第一种方式
进入选择系统的界面按e来进行编辑
找到fi下面这一行的最后开始删除到root后面加上空格rd.break
按Ctrl+x来进入 进入单用户模式
mount -o remount,rw /sysroot 重新以读写的方式来挂载
chroot /sysroot 给与权限
passwd 修改密码
touch /.autorelabel //自动重新标记,selinux

第二种方式
进入选择系统的界面按e来进行编辑
找到fi下面这一行里面的ro,把ro更改为 rw init=/sysroot/bin/sh
按Ctrl+x来进入 进入单用户模式
chroot /sysroot 给与权限
passwd 修改密码
touch /.autorelabel //自动重新标记,selinux

rhel7开机启动
1.stage1,stage2这两个文件在7里面文件名变了
stage1文件是/boot/grub2/i386-pc/boot.img
stage2文件是/boot/grub2/i386-pc/core.img

2.grub2版本对分区的命名方式有所改变
由原来的hd(0,0)变为hd0,msdos1 hd0代表第一块硬盘,msdos1代表第一个分区

3.改变了引导菜单的外观主要配置文件:/etc/default/grub

4./boot/grub2/grub.cfg //grub2主配置文件
如果该文件丢失可以使用 grub2-mkconfig -o /boot/grub2/grub.cfg 命令重新生成该文件

5./etc/inittab //默认启动等级,这个文件在7变成了一个说明文件
multi-user.target: analogous to runlevel 3 multi-user.target这个代表了3级别
graphical.target: analogous to runlevel 5 graphical.target这个代表了5级别
6.开机自启动的服务
通过命令
systemctl enable 服务名 //开启服务
systemctl disable 服务名 //关闭服务
7.开机启动级别
systemctl get-default //查看默认启动级别
systemctl set-default multi-user.target 修改默认启动3级别
systemctl set-default graphical.target 修改默认启动5级别

8.临时切换启动级别
systemctl isolate multi-user.target //临时切换到3级别

9.并不是所有的级别都可以临时切换
vim /usr/lib/systemd/system/graphical.target //这个文件规定了5等级是否可以被临时切换
AllowIsolate=yes //这个值为yes代表可以被临时切换如果为no则不可以

vim /usr/lib/systemd/system/multi-user.target //这个文件规定了3等级是否可以被临时切换
AllowIsolate=yes //这个值为yes代表可以被临时切换如果为no则不可以

rhel7 grub菜单的加密
vim /etc/grub.d/40_custom

grub2-mkpasswd-pbkdf2 //生成加密密码
PBKDF2 hash of your password is grub.pbkdf2.sha512.10000.3D7F051C1BA2B43
上面的值取is后面的 grub.pbkdf2.sha512.10000.3D7F051C1BA2B43……
set superusers=”root”
password_pbkdf2 root 加密密码 //密文加密
password root redhat //明文加密

配置完成后需要重新生成grub2配置文件
grub2-mkconfig -o /boot/grub2/grub.cfg

touch /.autorelabel //使用单用户模式修改完密码后需要重新标记

硬盘分区

msdos分区特点
分区表64字节,一个分区占用分区表16个字节的大小,只能分4个主分区
主分区,扩展分区,逻辑分区

vda1 vdb //虚拟磁盘第一块,第二块
hd(0,0) //IDE,scic
sd //scic,sata

df //查看磁盘使用情况
-h //人性化显示大小

fdisk -l //查看当前所有的磁盘设备
fdisk 设备名 //使用fdisk工具来修改分区表
例:fdisk /dev/vdb //修改/dev/vdb这个磁盘
Command (m for help): //输入操作命令
m or help //查看帮助
p //查看分区表
n //创建一个新的分区
d //删除一个分区
q //不保存并退出
w //保存并退出
t //修改分区类型

设置分区大小时需要注意:只写数字代表柱面编号,+50M代表设定大小为50M
Command (m for help): n //创建一个新的分区
Command action
e extended //e代表扩展分区
p primary partition (1-4) //p代表主分区
p //创建主分区
Partition number (1-4): 1 //分区号
First cylinder (1-20805, default 1): //决定起始柱面
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-20805, default 20805): +500M //决定该分区的大小

Command (m for help): p //查看分区表

Disk /dev/vdb: 10.7 GB, 10737418240 bytes
16 heads, 63 sectors/track, 20805 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xd78bf80c

Device Boot Start End Blocks Id System
/dev/vdb1 1 1017 512536+ 83 Linux //当前创建了一个vdb1分区大小500M

Command (m for help): n //创建一个新的分区
Command action
e extended
p primary partition (1-4)
e //创建扩展分区
Partition number (1-4): 2 //分区号
First cylinder (1018-20805, default 1018): //决定起始柱面
Using default value 1018
Last cylinder, +cylinders or +size{K,M,G} (1018-20805, default 20805): +2G //决定该分区的大小
Command (m for help): n
Command action
l logical (5 or over)
p primary partition (1-4)
l //创建逻辑分区
First cylinder (1018-5179, default 1018):
Using default value 1018
Last cylinder, +cylinders or +size{K,M,G} (1018-5179, default 5179): +500M //决定该分区的大小

Command (m for help): p //查看分区表

Disk /dev/vdb: 10.7 GB, 10737418240 bytes
16 heads, 63 sectors/track, 20805 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xd78bf80c

Device Boot Start End Blocks Id System
/dev/vdb1 1 1017 512536+ 83 Linux //主分区
/dev/vdb2 1018 5179 2097648 5 Extended //扩展分区
/dev/vdb5 1018 2034 512536+ 83 Linux //逻辑分区逻辑分区以5作为起始

Command (m for help): t //修改某个分区的类型
Partition number (1-5): 5 //选择分区号
Hex code (type L to list codes): l //查看当前所支持的类型

0 Empty 24 NEC DOS 81 Minix / old Lin bf Solaris
1 FAT12 39 Plan 9 82 Linux swap / So c1 DRDOS/sec (FAT-
2 XENIX root 3c PartitionMagic 83 Linux c4 DRDOS/sec (FAT-
3 XENIX usr 40 Venix 80286 84 OS/2 hidden C: c6 DRDOS/sec (FAT-
4 FAT16 <32M 41 PPC PReP Boot 85 Linux extended c7 Syrinx
5 Extended 42 SFS 86 NTFS volume set da Non-FS data
6 FAT16 4d QNX4.x 87 NTFS volume set db CP/M / CTOS / .
7 HPFS/NTFS 4e QNX4.x 2nd part 88 Linux plaintext de Dell Utility
8 AIX 4f QNX4.x 3rd part 8e Linux LVM df BootIt
9 AIX bootable 50 OnTrack DM 93 Amoeba e1 DOS access
a OS/2 Boot Manag 51 OnTrack DM6 Aux 94 Amoeba BBT e3 DOS R/O
b W95 FAT32 52 CP/M 9f BSD/OS e4 SpeedStor
c W95 FAT32 (LBA) 53 OnTrack DM6 Aux a0 IBM Thinkpad hi eb BeOS fs
e W95 FAT16 (LBA) 54 OnTrackDM6 a5 FreeBSD ee GPT
f W95 Ext’d (LBA) 55 EZ-Drive a6 OpenBSD ef EFI (FAT-12/16/
10 OPUS 56 Golden Bow a7 NeXTSTEP f0 Linux/PA-RISC b
11 Hidden FAT12 5c Priam Edisk a8 Darwin UFS f1 SpeedStor
12 Compaq diagnost 61 SpeedStor a9 NetBSD f4 SpeedStor
14 Hidden FAT16 <3 63 GNU HURD or Sys ab Darwin boot f2 DOS secondary
16 Hidden FAT16 64 Novell Netware af HFS / HFS+ fb VMware VMFS
17 Hidden HPFS/NTF 65 Novell Netware b7 BSDI fs fc VMware VMKCORE
18 AST SmartSleep 70 DiskSecure Mult b8 BSDI swap fd Linux raid auto
1b Hidden W95 FAT3 75 PC/IX bb Boot Wizard hid fe LANstep
1c Hidden W95 FAT3 80 Old Minix be Solaris boot ff BBT
1e Hidden W95 FAT1
Hex code (type L to list codes): 8e //修改为8e Linux LVM类型
Changed system type of partition 5 to 8e (Linux LVM) 5分区以修改为8e Linux LVM类型

Command (m for help): p

Disk /dev/vdb: 10.7 GB, 10737418240 bytes
16 heads, 63 sectors/track, 20805 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xd78bf80c

Device Boot Start End Blocks Id System
/dev/vdb1 1 1017 512536+ 83 Linux
/dev/vdb2 1018 5179 2097648 5 Extended
/dev/vdb5 1018 2034 512536+ 8e Linux LVM

保存完毕后需要查看一下分区文件是否生成
ll /dev/vdb*
如果没有生成那么执行
partx -a /dev/vdb
如果还没有分区文件,重启机器

swap 虚拟内存分区
swapon -s //查看swap的分区情况
1.创建一个1G的主分区或逻辑分区
2.格式化分区swap格式 mkswap 设备
3.swapon 设备 //激活swap

例:mkswap /dev/vdb3 //格式化/dev/vdb3分区为swap
swapon /dev/vdb3 //激活swap

swapoff /dev/vdb3 //停止该设备swap
如果想要永久生效需要修改/etc/fstab配置文件
/dev/vdb3 swap swap defaults 0 0

使用文件构成swap
dd if=/dev/zero of=/tmp/file bs=1M count=500 //创建一个大文件
mkswap /tmp/file //将该文件格式化为swap文件系统类型
swapon swap //激活swap

删除时
先停止设备的swap
再去删除分区

blkid 设备位置 //查看设备UUID

练习
创建主分区300M,500M,创建一个扩展分区 3G,创两个逻辑分区各1G
将的500M主分区挂载到/mnt下
将其中一个1G的逻辑分区永久挂载到/media下
将另一个1G的逻辑分区以UUID的方式永久挂载到/tmp下
将300M的主分区设置为swap,并激活
使用文件的方式永久挂载一个swap分区。

LVM(逻辑分区管理)

PV—->VG—->LV
PV:物理卷 在逻辑分区管理里面为最底层,可以是一个整个硬盘,或者是硬盘上的分区
VG:卷组 在逻辑分区管理里面为中间,是由一个或者多个物理卷组成
LV:逻辑卷 在逻辑分区管理里面为最上层,灵活使用卷组里的空间

PE:是物理卷上的最小存储单元,一个PE默认大小4M
LE:是逻辑卷上的最小存储单元,LE大小同等与PE的大小

pvcreate 设备名 //将该设备创建为物理卷,多个设备以空格分割
pvs //查看pv
pvdisplay //详细查看pv
vgcreate vg名 pv位置 //将pv添加到vg里,多个pv以空格分割
vgs //查看vg
vgdisplay //详细查看vg
lvcreate -n lv名 -L 大小 vg名 //从vg中取出空间来创建该lv
lvs //查看lv
lvdisplay //详细查看

lv存储位置,两个位置一样
/dev/mapper/vgfile-lvfile
/dev/vgfile/lvfile
扩展LV
如果vg足够
lvextend lv的位置 -L +大小 //扩展大小
resize2fs lv的位置 //扩展文件系统
如果vg不足
先添加pv
vgextend vg名 pv位置 //将该pv添加到相应的卷组里
lvextend lv的位置 -L +大小 //扩展大小
resize2fs lv的位置 //扩展文件系统

例:pvcreate /dev/vdb1 /dev/vdb5 /dev/vdb6 创建pv:/dev/vdb1 /dev/vdb5 /dev/vdb6
vgcreate vgfile /dev/vdb1 /dev/vdb5 /dev/vdb6 创建vgfile 包含的pv:/dev/vdb1 /dev/vdb5 /dev/vdb6
lvcreate -n lvfile -L 500M vgfile 创建lvfile 从vgfile里取出500M空间
mkfs.ext4 /dev/vgfile/lvfile 将该lv格式化为ext4
mount /dev/vgfile/lvfile 挂载点 //将lv挂载到相应的挂载点
想永久生效修改/etc/fstab文件

selinux

美国国家安全局开发的
selinux的开关由 /etc/selinux/config
vim
This file controls the state of SELinux on the system.
SELINUX= can take one of these three values:
enforcing - SELinux security policy is enforced. //违反策略将无法继续下去
permissive - SELinux prints warnings instead of enforcing.//违反策略可以继续,但是会记录下你的违反内容
disabled - No SELinux policy is loaded. //直接关闭
SELINUX=enforcing
SELINUXTYPE= can take one of these two values:
targeted - Targeted processes are protected,
mls - Multi Level Security protection.
SELINUXTYPE=targeted

getenforce //查看selinux状态
setenforce 0 //设置状态permissive
setenforce 1 //设置状态enforcing

ls -Z //查看安全上下文
-rw——-. root root system_u:object_r:admin_home_t:s0 anaconda-ks.cfg
system_u:object_r:admin_home_t
以冒号分割为3个部分 身份标示:角色:类型 安全上下文看类型这一块

查看服务的安全上下文
ps aux -Z | grep httpd //查看http服务的安全上下文

如果开启selinux必须类型匹配才可以进行访问

修改安全上下文

chcon -t 类型 文件名
-R 代表递归修改
-v 代表显示过程
例:chcon -t httpd_t /var/www/html/index.html //更改该文件的安全上下文

日志分析工具
由setroubleshoot-server 软件安装出来
yum install setroubleshoot-server

sealert -a /var/log/audit/audit.log

你可能感兴趣的:(Linux)