常用linux命令总结

命令的组成
命令字 选项 参数
cd / //切换目录,到根目录下
/:根
cd ~ //快速回到当前用户的家目录下
cd - //返回上一次所访问的目录
cd .. //返回上一级目录

pwd //打印当前目录路径

ls //列出当前目录下的信息
-a 全部包括隐藏
-l 显示出详细信息
-h 人性化显示大小
-t 以时间进行排序

路径:
相对路径:只对当前目录下的目录或文件生效
绝对路径:必须以根作为起始

cat //查看文件内容

vim 编辑器
命令模式,编辑模式(插入模式),结束模式
命令模式------->编辑模式 在命令模式下i I o O a A 都可以进入编辑模式
编辑模式------->命令模式 ESC,从编辑模式下返回命令模式
命令模式------->结束模式 : (冒号),从命令模式进入结束模式
结束模式
:w //保存
:q //退出
:q! //不保存并强制退出
:wq //保存并退出
:wq! //强制保存退出
修改IP地址的方法
1.ifconfig eth0 IP地址 //修改eth0这块网卡的IP地址(立即生效但不永久生效)
重启网络服务或机器会还原
2.修改配置文件,网卡的配置文件存放位置:/etc/sysconfig/network-scripts/
(永久生效但不立即生效)需要重启网络服务或机器让其生效
3.setup 使用setup工具进行修改(使用此工具相当于修改配置文件)
4.使用图形化界面(使用的网络服务为NetworkManager)

查看文件内容
查看小文件
cat //正序查看
tac //倒序查看
查看大文件
more
less //支持查找功能的
head //查看文件头部默认查看10行
tail //查看文件尾部默认查看10行
-f //实时查看
-n3 //指定查看3行
例:head -n5 /var/log/messages //查看文件messages的前5行

行过滤
grep 内容 文件 //过滤出该文件包含内容的行
grep ^内容 文件 //过滤出该文以该内容开头的行
grep 内容$ 文件 //过滤出该文以该内容结尾的行
例:grep root /etc/passwd //查看/etc/passwd这个文件中包含root的行
|:管道符 用于命令之间的链接
前一个命令的输出是后一个命令输入

列截取
cut -d分隔符 -f列数 文件
例子:cut -d: -f2 /etc/passwd //截取出/etc/passwd这个文件中以:为分割的第2列数据

wc //统计 行数,单词数,字节数(大小)
-l //只统计行数
-w //只统计单词数
-c //只统计大小

vim 拥有创建文件的功能(需要对该文件进行保存)
echo //输出字符串
> 重定向
>> 追加重定向 //重定向和追加重定向拥有创建文件的功能


touch //创建文件
1创建文件
2修改文件时间戳
stat 文件名 //查看文件属性和时间
------------------------------------------------------------------------------
rm //删除文件
-r //删除目录
-i //交互式删除
-f //不提示强制删除
-rf //慎用!!!
------------------------------------------------------------------------------
mkdir //创建目录
-p //递归创建目录
例:mkdir -p a/b/c/d
rmdir //删除空目录

cp 源文件 目的地 //复制一个文件
-r //复制目录
-p //保持源文件的属性权限

scp 源文件 目的地 //远程复制文件
scp 用户名@IP地址:/路径 目的地 //远程的文件复制到本地
--------------------------------------------------------------------------------
ssh 用户名@IP地址或主机名 //远程链接
sshd服务
service sshd start //打开sshd服务
--------------------------------------------------------------------------------
mv
1移动文件
2重命名
mv 源文件 目的地
mv 旧名称 新名称
--------------------------------------------------------------------------------
通配符
* 所有
? 匹配一个字符


--------------------------------------------------------------------------------

练习:(1)
1.在tmp目录下创建file1到100的文件
2.删除file1开始的所有文件及file3后面匹配一个字符的文件
3.在tmp目录下创建一个testdir目录,在该目录下创建a/b/c/d/e/f/目录
4.把file22复制到/tmp/testdir/a/b/c/d/e/f目录下
5.将file22改名成file1000
6.将file99保留源属性复制到testdir目录下
7.将f目录复制到testdir目录下
8.将tmp目录下的所有以file开始的文件全部强制删除
9.将testdir目录及目录下的所有文件以交互的方式删除
10.进入tmp目录下,复制上一级目录的srv目录到当前目录下
(2)
1.从/etc/passwd文件中,以高亮显示的方式过滤出带root字符串的行
2.从/etc/passwd文件中,过滤出带root字符串的行,并截取该行第三段的内容
3.用echo重定向的方式,将自己的主机名写入/tmp/info文件里,并追加任意字符串到该文件中
4.用vim创建/tmp/test文件,并输入主机名后保存。
5.ls -l /etc/passwd 文件,并从中截取文件大小那一列
6.从/etc/passwd中过滤出不带student和root并不以nologin结尾的行。
-------------------------------------------------------------------------------------
命令帮助
应用范围 用法
help 内部命令 help 命令字
--help 外部命令 命令字 --help
man 命令,配置文件 man 命令字
info 同man info 命令字

查看命令类型
type 命令字

shell 都是内部命令
aliased 命令别名
命令路径

查看文件内容类型
file 文件名

-------------------------------------------------------------------------------------
strings 文件名 //查看二进制文件
-------------------------------------------------------------------------------------
时间
date //查看时间
date +%H:%M //只查看当前的小时和分钟
date +%D //查看当前的日期
date "+%D %H:%M" //查看月日年及时间
修改时间
date -s "2016-8-1 23:00" //修改当前时间
rhel7
timedatectl //查看当前时区
timedatectl list-timezones //查看当前所支持的时区
timedatectl set-timezone Asia/Shanghai //修改时区

hwclock //查看当前的硬件时间
hwclock --systohc //将硬件时间与系统时间同步,以系统为基准
hwclock --hctosys //将硬件时间与系统时间同步,以硬件为基准

cal //查看日历
-------------------------------------------------------------------------------------
用户和组

vim /etc/passwd //用户信息
vim /etc/shadow //用户密码策略
vim /etc/gshadow //组密码策略
vim /etc/default/useradd //创建用户时的一些默认参数
vim /etc/group //组的信息
vim /etc/shells //当前支持的bash(命令解释器)
/etc/skel //家目录的默认参考文件
vim /etc/login.defs //创建用户时密码策略,权限等默认参数

vim /etc/passwd
1.用户名
2.X:密码占位符
3.UID(用户唯一标识符)
4.GID(组的唯一标识符)
5.用户说明信息
6.用户家目录
7.该用户所使用shell /sbin/nologin:代表不可以登陆系统

UID类型及范围
rhel6 rhel7
超级用户 0 0
系统用户 1-499 201-999
普通用户 500-60000 1000-60000
65535 最大支持的数

vim /etc/shadow
1.用户名
2.密码(加密后的)
3.最后一次修改密码的时间(从1970-1-1)
4.密码最短期限(密码最短有效期)
5.密码最长期限(密码最长有效期)
6.密码过期前几天的提醒
7.宽限时间,密码失效的日期(从1970-1-1) 天数
8.账户失效的日期(从1970-1-1)
9.保留子段

vim /etc/default/useradd
GROUP=100 //默认组!!
HOME=/home //默认家目录
INACTIVE=-1 // /etc/shadow 第7个字段 -1代表不启用
EXPIRE= // /etc/shadow 第8个字段 日期
SHELL=/bin/bash //默认使用的shell
SKEL=/etc/skel //存放家目录默认的参考文件(磁盘配额时需要)
CREATE_MAIL_SPOOL=yes //是否默认为该用户创建mail(邮件)

vim /etc/group
1.组名
2.组的密码占位符
3.GID(组的唯一标识符)
4.当前组所包含的成员

vim /etc/login.defs
MAIL_DIR /var/spool/mail //默认邮件的存放位置

PASS_MAX_DAYS 99999 //默认密码最长有效期,相当于/etc/shadow 第5字段
PASS_MIN_DAYS 0 //默认密码最短有效期,相当于/etc/shadow 第4字段
PASS_MIN_LEN 5 //密码最小长度
PASS_WARN_AGE 7 //密码警告天数,相当于/etc/shadow 第6字段


rhel6 rhel7

UID_MIN 500 UID_MIN 1000 //普通用户UID最小设定值
UID_MAX 60000 UID_MAX 60000 //普通用户UID最大设定值
SYS_UID_MIN 201 //系统用户UID最小设定值
SYS_UID_MAX 999 //系统用户UID最大设定值

GID_MIN 500 GID_MIN 1000 //普通用户GID最小设定值
GID_MAX 60000 GID_MAX 60000 //普通用户GID最大设定值
SYS_GID_MIN 201 //系统用户GID最小设定值
SYS_GID_MAX 999 //系统用户GID最大设定值


CREATE_HOME yes //如果创建用户是没有创建家目录那么是否自动创建

UMASK 077 //umask值代表默认权限,最大权限减去umask值 最大权限是777


用户和组配置
useradd 名字 选项 //创建用户的格式
-u //指定UID
-g //指定GID或组名(默认组)
-G //指定附属组
-d //指定家目录
-s //指定shell

passwd 用户名 //设置该用户的密码
普通用户可以修改自己的密码,但必须符合密码策略的复杂性要求
root用户可以设置任意人的任意密码,密码策略对root用户无效
新创建的用户第一个可用的密码必须时由root赋予

id 用户名 //显示用户的基本信息(包含了UID,GID,groups(附属组))

groupadd 组名
-g //指定GID

groups 用户名 //显示该用户

rhel6格式 rhel7格式
usermod 选项 用户名 usermod 选项参数的位置可以调换
-u //修改UID
-g //修改默认组
-G //指定附属组,如果有多个那么以逗号进行分割
-d //修改家目录
-s //修改shell
-aG //添加附属组,(这里不是指定,不会修改原有的)

groupmod 选项 组名 //修改现有组
-g //修改GID


userdel 用户名
-r //一般删除用户时都会加上这个选项,包括和当前用户相关配置文件(家目录,mail)一起删除

groupdel 组名
当前为空组

chage 用户名 //更改该用户的密码策略
chsh 用户名 //更改该用户的登陆shell
-------------------------------------------------------------------------------------------------------
练习
添加carol用户
添加tom和kevin组,指定GID为1010,1020
添加ivy用户,指定默认组为tom,附属组为carol组
添加mary用户,指定UID为1002
变更carol用户默认组为ivy组,附属组为tom组和mary组
给carol用户添加附属组kevin
将carol用密码修改为password
删除ivy用户和carol用户
删除tom组和kevin组

UGO 特殊权限 隐藏权限 ACL(访问控制列表)

UGO
U:user(拥有者)owner
G:group(所属组)
o:others(其他人)

d rwx r-x r-x
1.文件类型
-:普通文件
d:目录文件
l:链接文件
b:块设备文件
c:字符设备文件
p:管道文件

ll /dev

2.拥有者的权限(2-4)
3.所属组的权限(5-7)
4.其他人的权限(8-10)

r--=100=4
-w-=010=2
--x=001=1
rwx=111=7

chmod a,u,g,o + - = 文件名
例:chmod a-x 123
chmod g+w 123
chmod u=rwx 123

chmod 653 file
6代表拥有者的权限
5代表所属组的权限
3代表其他人的权限

特殊权限
suid sgid sticky
4 2 1

suid:
范围:可执行的文件
执行该文件时临时拥有该文件的拥有者身份
chmod u+s
chmod u-s


sgid:
范围:可执行的文件或目录
文件:执行时临时拥有文件所属组的权限
目录:继承父目录的所属组
chmod g+s
chmod g+s

sticky(sbit)
范围:目录
设置此权限该目录下的文件或子目录只有root和文件的拥有者才可以删除
chmod +t
chmod -t

chown 拥有者.所属组 文件名或目录名 //更改该文件或目录的拥有者或所属组
例:chown root.student /tmp/test //更改该文件的拥有者为root所属组为student
chown root /tmp/test //更改该文件的拥有者为root
chown root. /tmp/test //更改该文件的拥有者为root 所属组为root的默认组
chown .student /tmp/test //更改该文件的所属组为student
练习:
1.让普通用户不能修改自己的密码,利用suid权限
2.使用id命令来测试suid和sgid
3.创建目录该目录下的所属组自动成为父目录的所属组
4.设置一个目录当前目录拥有最大权限但目录中的文件及子目录只有拥有者和root才有权力删除


umask 管理默认权限

最大权限 - umask值 = 默认权限

家目录:777 - 077 = 700

/etc/profile
普通用户:umask=002
超级和系统用户:umask=022

文件最大权限 666
目录最大权限 777

普通用户创建文件默认权限:666-002=664
普通用户创建目录默认权限:777-002=775
超级用户创建文件默认权限:666-022=644
超级用户创建目录默认权限:777-022=755


隐藏权限 (ATTR权限)
lsattr 文件名 //查看attr权限(隐藏权限)
lsattr -d 目录名 //查看该目录的attr权限

chattr + - 权限编号 文件名 //设置权限
A:访问该文件时不修改访问时间
a:可以添加数据(echo >> ),不能删除和修改数据
i:不能删除,改名,移动,修改,新增,建立链接


ACL(访问控制列表)
多种不同权限,可以细分到某一个用户或组的权限

getfacl 文件名 //查看acl权限
setfacl
-m //设定acl权限
-x //删除某条ACL权限
-b //清空所有的ACL权限
-R //对目录做递归处理(目录下所有的文件及子目录都会生效)

setfacl -m 类型:组名或用户名:权限 文件名

例:setfacl -m u:tom:rw file //添加file文件的acl权限tom用户的权限为读和写(u代表用户 g代表组)
setfacl -m g:student:rw file //添加file文件的acl权限student组的权限为读和写(u代表用户 g代表组)
setfacl -m m::rw file //设定mask值(默认最大支持的权限)为读和写


getfacl student
user::rw-
user:tom:r--
user:frank:rwx #effective:rw- 实际权限
group::r--
mask::rw- 默认支持的最大权限
other::r--

visudo

sudo
-k //清除密码缓存

谁 在哪=(以谁的身份) 执行什么命令
tom ALL=(root) /usr/sbin/useradd
frank ALL=(tom) /bin/touch

sudo -u tom touch /tmp/tom1

文件系统结构
superblock(超级块)
inode(索引)
block(块)

windows : FAT16 , FAT32 , NTFS
LINUX:rhel3,4 EXT2
rhel6 EXT3 EXT4
rhel7 xfs

superblock:正个磁盘或分区或者某个组,的全部空间,占用空间,剩余空间数量,inode数量,block数量统计
inode:文件的属性(拥有者,大小,时间,权限等)
block:存放文件的真实数据

-------------------------------------------------------
软硬链接
硬连接
ln 源文件 硬连接文件 //创建硬连接文件

硬连接文件的特点
1.无法区分源文件和链接文件,他们使用的是相同的inode和相同block
2.创建一个硬连接,硬连接计数会加1
3.修改其中任意一个文件,所有的硬连接文件都会被修改
4.不能针对目录做操作
5.不能跨越文件系统
6.删除其中一个文件,对本文件没有任何影响,把所有的文件全部删除那么才导致文件的彻底删除


软链接(符号连接)
ln -s 源文件 链接文件 //创建软链接(建议写绝对路径)
软链接文件的特点
1.可以区分源文件和链接文件,他们使用的是不同的inode和block
2.创建一个软链接,查看ls -l链接文件时会显示源文件的文件
3.无法对链接文件修改属性,生效的是源文件
4.可以针对目录进行操作
5.可以跨越文件系统
6.删除源文件,其他所有的软链接文件全部失效,删除软链接文件对其他链接文件没有影响

用途:1.缩短路径
2.可以跨越文件系统

------------------------------------------
查找
1.ls -R //递归列出所有的文件及目录
2.whereis //指定的目录中去寻找,范围较小
3.which //根据PATH变量进行寻找,匹配到第一个,就不在进行查找
echo $PATH //查看PATH变量


4.locate //查找
特点
1)速度快
2)模糊查找
3)非实时
locate命令是根据一个数据库文件进行查找/var/lib/mlocate/mlocate.db
该数据的自动更新时间由该文件/etc/cron.daily/mlocate.cron
手动更新使用updatedb命令来更新数据库文件
/etc/updatedb.conf该文件updatedb命令的配置文件
vim /etc/updatedb.conf
PRUNEPATHS = "/afs /media /net /sfs /tmp /udev /var/cache/ccache /var/spool/cups /var/spool/squid /var/tmp"
执行updatedb命令时不扫描的目录

5.find
find 路径 查找条件 找到后的动作 //find命令格式

查找条件:名字,权限,时间,用户和组,类型,大小
名字:-name
权限:-perm
时间:-mtime -atime -ctime
用户和组:-uid -gid -user -group
类型:-type f(普通文件) l(链接文件)

大小:-size
-size +12k //大于12k
-size -12k //小于12k
-size 12k //等于12k


找到后的动作
-print: 将结果输出屏幕上, 预设动作

-exec: 找到后直接执行之后的命令
-ok:找到后交互式执行之后的命令

命令字 {} ;
"{}"代表找到后文件的位置


例:find /etc -name c*.conf -print //找出/etc目录下名字以c开头.conf结尾的文件输出到屏幕上
find /etc -name c*.conf //找出/etc目录下名字以c开头.conf结尾的文件输出到屏幕上
find /etc -name c*.conf -exec ls -l {} ; //找出/etc目录下名字以c开头.conf结尾的文件找到后执行ls -l命令
find /etc -name c*.conf -exec cp {} /tmp ; //找出/etc目录下名字以c开头.conf结尾的文件找到后复制到/tmp目录下
find /etc -name c*.conf -ok cp {} /tmp/test ; //找出/etc目录下名字以c开头.conf结尾的文件找到后以交互的方式复制到/tmp目录下
bash(命令解释器)

1.支持命令历史
2.命令别名
3.命令补全
4.快捷键

命令历史
history //命令历史的查询

echo $HISTSIZE //查看命令历史保存的数量

vim /etc/profile //变量的保存位置
HISTSIZE=1000

!! //调用上一条命令
!8 //调用第8条命令
!字符串 //调用最近一次以该字符串开头的命令
!$ //调用最近一次命令的参数
Ctrl+r //搜索包含该字符串的命令

命令别名
alias //查看命令别名
alias 新的名字=‘想要代替的命令’ //设置命令别名
注意:
在终端中输入该命令属于临时生效
想永久生效写在配置文件中
/etc/profile
/etc/bashrc
上面两个属于全局生效
~/.bash_profile
~/.bashrc
属于个人用户生效
例:alias 11='ssh root@172.25.0.11' //设置11成为ssh root@172.25.0.11的别名

命令补全
“tab”键单击补全命令,如果没办法补全,双击可以显示以该字符串开始的文件名都有哪些。(或者命令都有哪些)

快捷键
终端中使用

Ctrl +a 跳行首
Ctrl +l 清屏
Ctrl +e 跳行尾
Ctrl +c 中断
Ctrl +r 搜索
ctrl +d logout

------------------------------------------------------
用户登录流程
/etc/profile
/etc/profile.d/*

~/.bash_profile
~/.bashrc
/etc/bashrc

顺序必须了解
1./etc/profile
2./etc/profile.d/*
3.~/.bash_profile (里面会去读取~/.bashrc,当前文件没有读取完)
4.~/.bashrc(里面会去读取/etc/bashrc,当前文件没有读取完)
5./etc/bashrc (读取完整)
6.~/.bashrc (读取后面完整)
7.~/.bash_profile(读取后面完整)

PATH变量
作用:简化命令的写法
echo $PATH
/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/root/bin:/root/bin

执行passwd的时候显示hello字段

----------------------------------------
压缩和打包
00001111111000101011000110000

windows:.rar .zip .7z
linux
zip gzip bzip2 xz

dd if=/dev/zero of=/tmp/bigfile bs=1M count=50

zip 名字 需要压缩的文件

例: zip bigfile.zip bigfile //压缩该文件
unzip -l bigfile.zip //查看压缩文件的内容
zip -r bigfile.zip tom //将tom文件追加到bigfile.zip压缩文件中,也可以做递归处理
zip -d bigfile.zip tom //将bigfile.zip压缩文件中的tom文件从压缩文件中删除
unzip bigfile.zip //解压该文件
unzip bigfile.zip -d /root //把压缩文件中的内容解压到/root下

gzip 需要压缩的文件
gzip bigfile //压缩该文件,删除源文件
gzip -l bigfile.gz //查看压缩文件中的内容
gzip -d bigfile.gz //解压该文件
gunzip bigfile.gz //解压该文件和 gzip -d 没有区别

bzip2 需要压缩的文件
bzip2 bigfile //压缩该文件,删除源文件
bzip2 -k bigfile //压缩该文件,并保留源文件
bzip2 -d bigfile.bz2 //解压该文件
bunzip2 bigfile.bz2 //解压该文件和 bunzip2 -d 没有区别

xz 需要压缩的文件
xz bigfile //压缩该文件,删除源文件
xz -k bigfile //压缩该文件,并保留源文件
xz -d bigfile.xz //解压该文件
unxz bigfile.xz //解压该文件和 xz -d 没有区别


打包
tar -cvf 包的名称 需要打包的文件或目录
-c //代表创建打包
-v //显示过程
-f //包名称,注意f后面必须跟上包的名称
-z //gzip压缩
-j //bzip2压缩
-J //xz压缩
-x //解包
-t //查询
-r //添加某个文件到包里
--delete //删除包里的某个文件


例: tar -cvf root.tar /root //将/root打包
tar -r install.log -f root.tar //将install.log文件追加到root.tar包里
tar --delete install.log -f root.tar //将install.log文件从root.tar包里删除
tar -tf root.tar //查看包里有哪些内容
tar -xvf root.tar //解开包

tar -zcf root.tar.gz /root //将/root打包并压缩成gzip格式
tar -jcf root.tar.bz2 /root //将/root打包并压缩成bzip2格式
tar -Jcf root.tar.xz /root //将/root打包并压缩成xz格式
tar -zxf root.tar.gz //将root.tar解压并解包
tar -jxf root.tar.bz2 //将root.tar解压并解包
tar -Jxf root.tar.xz //将root.tar解压并解包
-----------------------------------------------------------------
标准输入和标准输出

> //标准输出重定向
>> //标准输出追加重定向

2> //错误输出重定向
2>> //错误输出追加重定向

&> //全部输出重定向
&>> //全部输出追加重定向

ll /etc > /tmp/shadow 2> /tmp/out //正确的和错误的使用两个文件保存

ll /etc &> /tmp/out
ll /etc > /tmp/out 2>&1 //两种写法结果一样


< //标准输入
例:cat < /etc/hosts //查看/etc/hosts文件

cat > /tmp/file < /etc/hosts //将/etc/hosts文件输入到cat并输出到/tmp/file文件中去
cat /etc/hosts > /tmp/file //此命令的效果同上

<< //后面跟上结束符(结束符任意),结束符之前的所有数据成为输入

例:
cat << END
> lkasdfuiouqwe
> zc,mvnlasdkjf
> qweoriu,mcnva
> end
> END
lkasdfuiouqwe
zc,mvnlasdkjf
qweoriu,mcnva
end

cat > /tmp/file << OUT
> echo hello
> OUT

-------------------------------------------------
软件安装
1.源码包安装
2.二进制安装
3.RPM
4.YUM

源码包
优点:可制定
缺点:操作复杂,编译时间长,非常容易出现问题或报错
安装:
1.下载并解压源码包
2.进入解压后的目录,执行“./configure”命令,为编译前做本地环境的配置。
3.配置成功后,执行“make”命令,来进行软件的编译。
4.编译成功后,执行“make install”命令来完成安装。
5.最后,执行“make clean”命令来删除安装时所产生的临时文件
卸载:
进入安装的目录,执行卸载命令“make uninstall”来进行卸载
注意:并不是所有的软件包都提供uninstall的功能,如果没有提供只能手工删除。
“./configure --prefix=/usr/local/dir” 将该软件安装到指定的目录下,一般默认安装在/usr/local里面

二进制安装
直接解压缩即可使用


RPM:redhat package management
命令语法
rpm 选项 参数
需要rpm包,一般都是以.rpm结尾
rpm包命名的结构

ntfsprogs-2.0.0-13.el6.x86_64.rpm
软件名-版本号-操作系统平台.rpm

使用rpm命令,可以对该软件进行安装,查询,卸载,升级,显示所需依赖关系的软件

依赖关系:某软件依赖与其他软件。

rpm安装软件的步骤
1.下载rpm包
2.使用rpm命令来进行安装“rpm -ivh 软件包的全名”
rpm
-i //安装
-v //显示过程
-h //显示安装时列出标记

查询
-a //查询所有软件包
-q //询问模式
-f //文件名,查看该文件是由哪个软件产生的
-l //显示软件包列表
-i //软件包的详细信息


升级
-U //升级,若该文件没有安装则安装
-F //升级,若该为件没有安装则放弃(不安装)

卸载
-e //卸载该软件
--nodeps -e //不卸载依赖关系

yum
yum特点
1.自动解决依赖性问题
2.组包,可以对RPM包进行分组,以组包的形式来进行安装
3.yum引入仓库的概念,yum源。支持多个仓库。
4.配置简单


/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-release //如果检测是1,那么必须要有相应的钥匙参数。

仓库的位置:
本地:file:///mnt/ //本地使用格式file后的前两个斜杠代表格式第三个斜杠代表“根"
远程: ftp://
nfs://
http:// //看使用的是什么协议

配置完成之后,需要清除yum缓存,清除完成后建立缓存
yum clean all //清除缓存
yum makecache //建立缓存

创建本地yum仓库
1.下载系统镜像文件
wget http://classroom.example.com/content/rhel6.5/x86_64/isos/rhel-server-6.5-x86_64-dvd.iso
2.挂载镜像到本地目录
mount -o loop /root/rhel-server-6.5-x86_64-dvd.iso /mnt
3.创建仓库配置文件(必须以.repo结尾)
vim /etc/yum.repos.d/iso.repo
4.修改该配置文件
[iso]
name = file repos
baseurl = file:///mnt
enable=1
gpgcheck=0

5.清除缓存,建立缓存
yum clean all
yum makecache
6.安装验证
-------------------------------------------
vim进阶使用
正常模式 插入模式(编辑模式) 结束模式

正常模式
yy 复制一行(光标所在位置)
p 粘贴
3yy 复制三行
dd 删除一行或移动一行使用p来移动
G 跳转到文档的最后一行
gg 跳转到文档的第一行
5gg 跳转到第5行
u 撤销
ctrl+r 反撤销(恢复)
0 移动到行首
$ 移动到行尾
/关键字 搜索光标之下
?关键字 搜索光标之上
ZZ 保存并退出

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

:set nu //显示行号
:set nonu //关闭行号显示
:nohl //关闭高亮显示
:!命令 //临时切换到bash使用命令(不识别命令别名),任意键返回该文档
.!命令 //将命令的执行的结果插入到所编辑的文件中
:3 //跳转到第3行
:s/w/o //光标所在行第一个出现的“w”替换成“o”
:s/w/o/g //光标所在行出现的所有“w”替换成“o”,g代表整行替换
:%s/w/o/g //忽视光标所在位置进行全文替换,所有“w”替换成“o”
:% //代表将后面的替换作用到所有的行
:w 绝对路径 //另存为该文件
:r 文件名 //在该文档读取另一个文档,显示位置为光标所在位
:e! //放弃修改并重新加载原始文件

------------------------------------------------------
进程
pstree //查看进程树

父进程 PPID
子进程 PID

rhel6:所有的进程之父init
rhel7:所有的进程之父systemd

ps aux //静态查看,a代表全部,u代表用户,x代表没有控制终端的进程

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

守护进程

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

ps -le //查看进程的优先级,重点看NI这一列表示优先级

pgrep init //只显示init进程的进程ID(PID)
-l //显示进程名
-U 用户名 //显示该用户所产生的进程ID
-t ttyID //显示由该终端所产生的进程ID

pidof 进程名 //只显示进程ID


动态查看进程
top //动态查看进程
默认3秒刷新一次,空格可以立即刷新,输入“d”在输入秒数可以更改默认刷新的时间

"P"根据CPU的占用率来进行排序
“M”根据内存的占用率来进行排序
“N”根据启动时间来进行排序
“n”输入想一页显示进程的数量
"<" ">" 左右翻页
"c"命令名的切换,详细的路径,命令名。详细的还包括参数
"k"结束进程,默认使用15信号

ctrl+c 终止查看动态进程

结束进程
kill 信号 进程ID(PID)
-1 重置信号,一般用于让服务重新加载自己的配置文件,让进程重新加载新的配置信息包括配置文件
-9 强制关闭某个进程
-15 等待进程正常退出信号,和9信号的区别在于数据流的回写。

killall 进程名 //结束同名的所有进程

pkill //根据条件来结束相应的进程
-t 终端号
-U 用户名

xkill //点谁谁死,哪里不动点哪里


进程的优先级
ps -le //查看优先级 NI
优先级的数字越小优先级越高
优先级数字的范围:-20-19

1.创建进程时指定优先级
2.修改一个现有进程的优先级

nice -n 20 ping 127.0.0.1 //创建进程时指定优先级
renice -n 0 PID
例:renice -n 0 26715 //修改一个现有进程的优先级

注意:root用户可以在优先级的范围内随意修改,
普通用户只能把优先级调低,普通用户不能指定小于0的优先级


前台作业后台作业
创建时命令后跟上“&”,创建后台作业
jobs //查看后台作业
fg 后台作业编号 //将后台作业调到前台
ctrl+z //将已经触发的前台作业调到后台,后台作业暂停
bg //让后台作业继续运行

例:
ping 127.0.0.1 > /dev/null & //创建
jobs //查看
fg 3 //将3号作业调到前台
ctrl+z //将已经3号前台作业调到后台并暂停作业
jobs //查看运行的状态
bg //让后台作业继续运行
jobs //查看运行状态
---------------------------------------------------------

日志

日志的作用:
1.解决系统方面的问题
2.解决网络服务的问题
3.记录过往事件

/var/log/ //日志文件保存位置
cron //记录周期性任务计划
dmesg //开机核心侦测信息
lastlog //系统所有行好最近一次的登陆信息
maillog //邮件往来
messages //系统错误信息
secure //设计输入系统帐号密码的程序
wtmp //正确登陆系统的账户信息
btmp //错误登陆系统的账户信息

/var/log/httpd/* //不同的网络服务会保存在自己的日志目录中
/var/log/samba/*
日志类型
1.ASCII类型

2.data类型
last //查看wtmp日志文件
lastb //查看btmp日志文件


日志需要的服务
rsyslogd //主要负责记录系统运作时的信息和内核信息写入日志,日志的主服务
logrotate //主要负责日志轮询

rhel5版本之前日志的服务syslogd服务,rhel6之后rsyslogd服务

rsyslog
什么服务 什么等级 记录在哪个文件
配置文件:/etc/rsyslog.conf
/etc/rsyslog.d/*

/etc/rsyslog.conf

#### RULES ####
选项 动作 (选项和动作以制表符“Tab”分割)

选项:设施和级别(设施和级别以“.”进行分割)(不同的选项以“;”分割)
*.info;mail.none;authpriv.none;cron.none /var/log/messages

设施
authpriv //认证系统,询问用户和口令
cron //周期性计划任务
daemon //守护进程程序
kern //内核的信息
mail //邮件系统
lpr //打印机
news //新闻系统
user //本地用户应用程序的信息
uucp //uucp子系统的信息,
local0-7 //本地类型信息

man syslog //查看帮助,里面有级别的说明
级别
0-7
0 emerg //基本要死机
1 alert //这个问题相当严重,比临界点更严重
2 crit //临界点,这个错误已经很严重了
3 err //重大错误信息
4 waining //警告
5 notice //注意:非错误的状态报告,但应特别处理;比info级别更需要注意
6 info //通报信息
7 debug //调试错误

none //带有该级别的类型长生的信息无需送出
.xxx:表示大于该级别的信息
.=xxx:表示等于该级别的信息
.!xxx:表示在该等级之外的等级信息

动作
/filename 日志文件,绝对路径指出文件名,将选项的日志信息保存在该文件。此文件必须事先建立
@host 远程主机;@符号后面可以是IP地址,也可以是域名或主机名
username,username 发送给指定的用户,该用户必须处于登陆状态。
* 所有用户,用户必须处于登陆状态。

例:
1.保存在普通的文件或设备文件中
*.* /var/log/file.log //记录到普通文件
*.* /dev/pts/0 //记录到设备文件
2.转发给远程主机
*.* @192.168.0.1 //使用UDP协议转发到192.168.0.1的514(默认)端口
*.* @@192.168.1.1:10514 //使用TCP协议转发到192.168.1.1的10514(默认)端口
3.发送给用户(必须在线才能收到)
*.* root //发送给用户root
*.* root,student,redhat //发送给指定的多个用户
*.* * //发送给所有用户
4.忽略,丢弃
local3.* ~ //忽略所有local3类型的所有级别的日志
5.执行脚本
local3.* ^/tmp/shell.sh //“^”后面跟上可执行的脚本或程序的绝对路径

服务
rhel6
service rsyslog restart //重启服务
rhel7
systemctl restart rsyslog //重启服务

注意:如果日志配置文件进行了修改需要重启服务使其生效

-------------------------------------------
logrotate //日志的轮询

/etc/logrotate.conf //轮询主配置文件
/etc/logrotate.d/*

vim /etc/logrotate.conf

日志文件{
规则
}


参数和选项
daily 每天轮询
weekly 每周轮询
monthly 每月轮询
rotate 保留几个带时间戳的文件
create 创建新文件(可以规定权限,拥有者,所属组)
dateext 旧文件以时间为结尾
size 指定大小


logrotate -vf /etc/logrotate.conf

总结
日志的作用
日志的主配置文件
日志的位置
日志的类型
日志的轮询作用
日志轮询的主配置文件

-----------------------------------------------

计划任务
一次性的计划任务
周期性的计划任务

一次性的计划任务
atd //一次性计划任务的服务

命令
at 时间 日期 //创建一次性计划任务
at>指令 //执行什么命令
at><EOT> //ctrl+d来提交该计划任务

at -l //查询一次性计划任务
at -d ID //删除某个一次性计划任务
at -c ID //查询某个计划任务的详细信息

生成计划任务后会生成一个文件
保存在/var/spool/at/目录下,删除里面的文件相当于删除计划任务

一次性计划任务的黑名单
vim /etc/at.deny
注意:一行一个用户名


周期性计划任务
vim /etc/crontab //周期性计划任务的配置文件

SHELL=/bin/bash //命令使用bash命令解释器
PATH=/sbin:/bin:/usr/sbin:/usr/bin //如果没有使用绝对路径命令从这几个目录中去搜索
MAILTO=root //如果周期性计划任务出现问题会发送mail给root

连续的时间使用 “-”
间断的时间使用 “,”
*/5 如果在分钟段位那么代表每隔5分钟


缓存目录/var/spool/cron/ 拥有和创建者同名的文件
root有权利给任何人创建周期性计划任务


crontab -e //编辑周期性计划任务
-l //查看
-u username //使用其他用户操作(root)
-r //清除所有的周期性计划任务

crontab -u student -e //为student用户编辑周期性计划任务


/etc/cron.deny //周期性计划任务的黑名单

练习:
每周一到周五早晨9点和下午13点,统计一下当前系统里有多少用户登陆着并将结果追加到/tmp/wc.txt
每隔两小时查看当前进程有几个,结果追加到/tmp/ps.txt
在今天的23:30分root为student用户创建周期性计划任务内容为:在6月和12月的30号的晚上10点50分统计一下可以登陆操作系统的用户数量并将结果追加到/tmp/user文件中。
-----------------------
内核
内核的模块化

uname -a //查看当前所有的内核版本


内核模块
/lib/modules/2.6.32-431.el6.x86_64/kernel/ //模块的存放位置
模块文件一般是以“.ko”结尾

/lib/modules/2.6.32-431.el6.x86_64/modules.dep //记录了模块之间的依赖关系

depmod //更新模块依赖关系的命令

查看
lsmod //查看当前所加载的所有模块
modinfo //查看某个模块的详细信息

加载
insmod 模块的位置 //加载一个模块(无法解决依赖关系)

rmmod 模块名称 //卸载一个模块
-f //强制卸载,不管该模块是否正在被使用

modprobe //可以加载模块,自动解决依赖关系
-r //卸载模块,但和yum一样会把相应的依赖关系全部卸载,慎用!!!
-f //强制加载
-c //查看


内核参数
管理系统功能的开关

cat /proc/sys/net/ipv4/icmp_echo_ignore_all //该内核参数管理忽略所有的ping包

vim /etc/sysctl.conf //永久生效某个内核参数写在该配置文件中

sysctl -p //让内核参数立即生效
--------------------------------------------------------------
挂载

mount //查看挂载信息挂载
df -h //查看挂载信息
1.标准格式
mount -t 文件系统类型 挂载源 挂载点
-o //带选项的挂载
ro //只读
rw //读写
remount //重新挂载
loop //本地

2.非标准格式
mount 挂载源 挂载点

注意:挂载点最好为空目录
如果挂载点是非空目录,挂载完成后;目录原来的数据会消失(暂时不可用);当卸载时目录的原始数据才会恢复。
卸载时不要在卸载目录中

umount 挂载点 //卸载该挂载点

mount的应用
1.挂载大文件,变相的可以控制目录所使用的空间(磁盘配额)
1)创建大文件
2)格式化大文件 mkfs.ext4 文件名 //格式化某个文件
3)挂载

练习:使用挂载大文件限制student用户的家目录使用空间为50M,并不影响student用户的操作

2.挂载镜像文件

3.挂载远程目录
mount IP地址:/content 挂载点

4.多级目录快速访问
mount --bind 旧的目录 新的目录


vim /etc/fstab //想永久生效挂载在该配置文件中写入信息

6个字段
1.挂载源
2.挂载点
3.文件系统类型
4.选项(如果是空选项使用“defaults”)
5.是否需要备份(0代表否 1代表是)
6.是否需要检测(0代表否 非0代表是并且有优先级,数字越小优先级越高)

mount -a //修改完成后使用此命令立即生效或者重启计算机

---------------------------------------------------------------------
开机启动流程
1.硬件启动
MBR:主引导记录
bootloader引导程序:win ntblr ;rhel6 grub ;rhel7 grub2
DTP:分区表
55AA:校验


2.软件启动

runlevel 0 //是让init关闭所有的进程并终止系统(关机)
runlevel 1 //用来将系统转到单用户模式,用于对系统的紧急救援,单用户模式只有管理员(root)能进
runlevel 2 //允许使用多用户模式(不完整),不支持文件的共享等功能,一般很少用
runlevel 3 //真正的多用户模式(完整),是多数服务器的默认模式
runlevel 4 //一般不被系统使用,用户可以自己设计及自的系统状态并将其应用(自定义)
runlevel 5 //图形化界面,使用X windows终端
runlevel 6 //是让init关闭所有的进程并重启系统(重启)


rhel6
使用单用户模式更改root密码
grub---->"e"进行编辑----->选中kernel这项再按“e”来进行编辑----->在最后输入“ 1”(空格和1)
----“Enter”(回车)-----按“b”来进入单用户模式------输入“passwd”来修改密码-----exit

vim /boot/grub/grub.conf
default=0 //默认的grub菜单
timeout=30 //默认时间30后自动进入系统
splashimage=(hd0,0)/grub/splash.xpm.gz //grub菜单的背景图片
hiddenmenu //默认不显示grub菜单
password --md5 $1$UwQm4/$8h/VGdOXDLf3NuvoOAOS40 //在说明信息上方的password,对grub菜单进行加密
title windows 7 //说明信息
password --md5 $1$ogRm4/$5dQmC.gvXAzmvKhiGsgwl/ //在说明信息下方的password,进入系统时需要密码
root (hd0,0) //将boot成为根(/)
kernel /vmlinuz-2.6.32-431.el6.x86_64 //加载kernel,驱动,硬盘分区,语言格式编码等
initrd /initramfs-2.6.32-431.el6.x86_64.img //启用虚拟文件系统


grub-md5-crypt //用于生成加密密码的命令

rhel6

chkconfig 服务名 on/off //设定服务是否开机启动
chkconfig --list //查看服务是否开机启动的状态
chkconfig --level 35 sshd off //在启动等级3和5的时候不启动sshd

---------------------------------------------------------------------------

rhel7
1.stage1和stage2文件名称有所变化
stage1变成/boot/grub2/i386-pc/boot.img
stage2变成/boot/grub2/i386-pc/core.img

2.grub2版本的grub.cfg配置文件中的分区命名方式有所改变
(hd0,0)改成'hd0,msdos1'

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

4.可以通过命令 grub2-mkconfig -o /boot/grub2/grub.cfg 来重新生成配置文件或更新配置文件

5. init变成systemd

6./etc/inittab 变成的说明文件

启动级别
systemctl get-default //查看默认的启动级别
systemctl set-default 启动级别的名字 //设置启动级别
例:systemctl set-default multi-user.target //设置启动级别为3等级

启动等级相应的配置文件/lib/systemd/system/<target name>.target

vim /usr/lib/systemd/system/multi-user.target //查看3级别的配置文件
AllowIsolate=yes //该级别是否可以被临时切换,修改完成后重启生效

启动服务
该服务是否开机启动,分到了各个服务中
systemctl status sshd //查看sshd服务的状态
sshd.service - OpenSSH server daemon
Loaded: loaded (/usr/lib/systemd/system/sshd.service; disabled) //代表是否开机启动disabled代表关闭enable代表开启
Active: active (running) since Wed 2016-12-07 21:24:35 EST; 5h 3min ago //当前服务的运行状态

设置开机启动的服务
systemctl enable 服务名 //设置开机启动
systemctl disabled 服务名 //设置开机不启动


systemctl isolate rescue.target //临时切换到救援模式,rescue.target救援模式的名称

rhel7修改密码
第一种方式
1.找到linux16开始的那一行,从后面开始删除,删除到第一个root,在最后追加rd.break,然后按Ctrl-x重启即可进入单人模式
2.mount -o remount,rw /sysroot
3.chroot /sysroot
4.passwd
5.touch /.autorelabel
6.exit
7.exit

第二种方式
1.找到linux16开始的那一行,在这一行中找到ro 并将ro更改为 “rw init=/sysroot/bin/sh",然后按Ctrl-x重启即可进入单人模式
2.chroot /sysroot
3.passwd
4.touch /.autorelabel
5.Ctrl+Alt+del


rhel7给grub2菜单进行加密

vim /etc/grub.d/40_custom
set superusers='root'
password root 123
配置完成后
grub2-mkconfig -o /boot/grub2/grub.cfg //更新一下主配置文件
以上就是明文加密,用户名可以是任意的(可以是系统没有的用户)


密文加密
grub2-mkpasswd-pbkdf2 //生成加密密码,注意取加密密码是取is后面的
vim /etc/grub.d/40_custom
set superusers='root'
password_pbkdf2 root grub.pbkdf2.sha512.10000.0862D41B5F0BBF76090C2BDB710
配置完成后
grub2-mkconfig -o /boot/grub2/grub.cfg //更新一下主配置文件

-----------------------------------------------------------------------------
selinux

selinux属于一种权限

/etc/selinux/config


getenforce //查看selinux的状态

setenforce 1或0 //设置selinux的状态

selinux限制两个方面
1.布尔值
2.安全上下文


1.布尔值
getsebool -a //查看当前所有限制方面的布尔值
setsebool -P 布尔值名 on或off //调整布尔值
例:setsebool -P samba_share_nfs on //调整布尔值

2.安全上下文
主体(进程)和目标的安全上下文必须一致才能够顺利访问

查看安全上下文
ls -Z
-rw-------. root root system_u:object_r:admin_home_t:s0 anaconda-ks.cfg

system_u:object_r:admin_home_t //安全上下文
身份标示 : 角色: 类型

ps -efZ | grep httpd //查看主题安全上下文
unconfined_u:system_r:httpd_t:s0 apache 1951 1944 0 10:35 ? 00:00:00 /usr/sbin/httpd

修改安全上下文
1.chcon -t 安全上下文的类型 文件
例:chcon -t httpd_t /var/www/html/index.html

2.restorecon 文件或目录 //同步安全上下文
-R //递归修改
-v //显示过程


selinux日志分析工具
yum install -y setroubleshoot-server //如果没有下面的命令,安全此软件包

sealert -a /var/log/audit/audit.log //使用selinux日志分析工具来分析日志,会把解决方案分析出来

-------------------------------------------------------------

硬盘管理(分区,swap,LVM)

DPT:分区表(64)
分区方式:MBR,GPT

MSDOS:硬盘总大小小于2T(15个分区)

1个分区占用16个字节,msdos最多可以分为4个分区。主分区,扩展分区,逻辑分区

hd sd vd
hd hd(IDE)
sda1 sd表示硬盘的接口类型(SATA,SAS,SCSI);a代表第一块硬盘 ;1代表第一个分区
sdb2 b代表第二块硬盘,2代表第二个分区
sda5 第5个分区(逻辑分区)

关于大小:B-KB-MB-GB-TB-PB-EB-ZB-YB 单位1024


磁盘分区
fdisk -l //查询所有的存储设备状态(包括分区表)
df -h //查看挂载情况

fdisk 设备文件 //使用fdisk磁盘管理工具来管理磁盘
m 查看帮助
n 添加新的分区
p 显示分区表
d 删除分区
q 不保存并退出
w 保存并退出
t 更改分区的类型编号(type_ID),注意此功能没有实际作用只是区分分区的作用

例:fdisk /dev/vdb
Command (m for help): n //创建新分区
Command action //创建新分区的类型
e extended //“e”代表扩展分区
p primary partition (1-4) //“p”代表主分区 范围(1-4)
p //创建主分区
Partition number (1-4): 1 //分区编号为“1”
First cylinder (1-20805, default 1): //起始柱面,默认是“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: 0x42e92285

Device Boot Start End Blocks Id System
/dev/vdb1 1 1017 512536+ 83 Linux

Command (m for help): n //新建分区
Command action
e extended
p primary partition (1-4)
e //类型为扩展分区
Partition number (1-4): 4
First cylinder (1018-20805, default 1018):
Using default value 1018
Last cylinder, +cylinders or +size{K,M,G} (1018-20805, default 20805): +5G

Command (m for help): n
Command action
l logical (5 or over)
p primary partition (1-4)
l //类型为逻辑分区,只有创建完扩展分区才会出现此选项
First cylinder (1018-11421, default 1018):
Using default value 1018
Last cylinder, +cylinders or +size{K,M,G} (1018-11421, default 11421): +1G

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

没有出现警告提示,就会出现相应的配置文件
[root@rhel6 ~]# ll /dev/vdb*
brw-rw----. 1 root disk 252, 16 Dec 9 13:45 /dev/vdb
brw-rw----. 1 root disk 252, 17 Dec 9 13:45 /dev/vdb1
brw-rw----. 1 root disk 252, 20 Dec 9 13:45 /dev/vdb4
brw-rw----. 1 root disk 252, 21 Dec 9 13:45 /dev/vdb5
brw-rw----. 1 root disk 252, 22 Dec 9 13:45 /dev/vdb6

如果出现警告提示,没有产生相应的配置文件,需要重启或输入命令来重新生成
partx -a /dev/vdb

使用分区
1.分区,产生分区文件后
2.格式化 mkfs.ext4 /dev/vdb1
3.挂载 mount

卸载分区
1.卸载 umount
2.去分区表里删除

注意:使用命令是临时生效,想永久生效配置文件/etc/fstab

UUID //设备唯一标示符

blkid //查看所有设备的UUID

挂载时可以使用UUID

GPT分区表分区(支持2TB以上的硬盘分区,最多可分区128个)
使用分区工具parted
[root@rhel7 ~]# parted /dev/vdb
GNU Parted 3.1
Using /dev/vdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) help //查看帮助
align-check TYPE N check partition N for TYPE(min|opt) alignment
help [COMMAND] print general help, or help on COMMAND
mklabel,mktable LABEL-TYPE create a new disklabel (partition table)
mkpart PART-TYPE [FS-TYPE] START END make a partition
name NUMBER NAME name partition NUMBER as NAME
print [devices|free|list,all|NUMBER] display the partition table, available devices,
free space, all found partitions, or a particular partition
quit exit program
rescue START END rescue a lost partition near START and END
rm NUMBER delete partition NUMBER
select DEVICE choose the device to edit
disk_set FLAG STATE change the FLAG on selected device
disk_toggle [FLAG] toggle the state of FLAG on selected device
set NUMBER FLAG STATE change the FLAG on partition NUMBER
toggle [NUMBER [FLAG]] toggle the state of FLAG on partition NUMBER
unit UNIT set the default unit to UNIT
version display the version number and copyright
information of GNU Parted
(parted) mklabel gpt //将该硬盘分区表改变成gpt
(parted) mkpart primary 0 -1 //将整块磁盘分成一个分区
Warning: The resulting partition is not properly aligned for best performance.
Ignore/Cancel? ignore
(parted) print //查看分区表
Model: Virtio Block Device (virtblk)
Disk /dev/vdb: 10.7GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number Start End Size File system Name Flags
1 17.4kB 10.7GB 10.7GB primary
(parted)quit //退出
[root@rhel7 ~]# mkfs.xfs /dev/vdb1 //格式化该分区
meta-data=/dev/vdb1 isize=256 agcount=4, agsize=655298 blks
= sectsz=512 attr=2, projid32bit=1
= crc=0
data = bsize=4096 blocks=2621191, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=0
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[root@rhel7 ~]# mount /dev/vdb1 /mnt //挂载使用
[root@rhel7 ~]# df -h //查看
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg--rhel7-root 18G 3.0G 15G 18% /
devtmpfs 488M 0 488M 0% /dev
tmpfs 498M 84K 497M 1% /dev/shm
tmpfs 498M 6.8M 491M 2% /run
tmpfs 498M 0 498M 0% /sys/fs/cgroup
/dev/mapper/vg--rhel7-home 497M 26M 472M 6% /home
/dev/vda1 497M 119M 379M 24% /boot
/dev/vdb1 10G 33M 10G 1% /mnt


swap分区 //虚拟内存分区
1.使用分区的方式
1)创建分区
2)格式化分区 mkswap /dev/vdb1
3)激活swap swapon /dev/vdb1
4)查看swap swapon -s
5)查看内存所有的信息 free -m


2.使用大文件方式
1)创建大文件 dd if=/dev/zero of=/tmp/swap bs=1M count=500
2)格式化大文件 mkswap /tmp/swap
3)激活 swapon /tmp/swap
4)查看swap swapon -s
5)查看内存所有的信息 free -m


磁盘配额
作用:可以限制用户对硬盘的可以空间或最大创建文件的数量,并且还有软/硬限制
软限制:当达到软限制时会提示用户,但允许用户在规定的期限内继续使用
硬限制:当达到硬限制时会提示用户,强制终止用户操作

quotacheck //检测获取磁盘的磁盘配额使用情况(创建,检查和修复磁盘配额)
如果没有文件会产生quota.user和quota.group两个文件

quota 参数 //用于显示用户或组的磁盘配额信息
参数 用户名或组名
-g 列出组的配盘空间显示


quotaon //用于激活linux内核中指定文件系统的配盘配额功能

repquota //以报表的格式输出指定分区,或文件系统的磁盘配额信息

edquota //用于超级用户编辑其他用户的quota配额限制
-u 编辑用户的配额限制
-g 编辑用户组的配额限制

1.创建分区
2.格式化
3.挂载 带选项 -o usrquota,grpquota
4./etc/skel目录下相应的文件复制到家目录中
5.更改家目录的权限,拥有者和所属组
6.关闭selinux setenforce 0
7.检测 quotacheck -cugm /home/student //会在家目录创建两个文件
8.激活磁盘配额 quotaon /home/student !!!想取消磁盘配额时quotaoff //取消激活
9.查看报告 repquota /home/student
10.编辑配额情况 edquota student
11.查看用户的磁盘配额信息 quota student
12.验证

------------------------------------------------------------
LVM (逻辑卷管理)

PV VG LV

PV:物理卷 整个磁盘或者磁盘分区
VG:卷组 由一个或多个PV组成
LV:逻辑卷 从卷组中取出一部分空间来使用


分区---PV-----VG-----LV

创建的步骤
1.分区
2.创建PV pvcreate /dev/vdb1 /dev/vdb5 /dev/vdb6
3.创建VG vgcreate vgtest /dev/vdb1 /dev/vdb5 /dev/vdb6
4.创建LV lvcreate -n lvfile -L 1G vgtest
5.格式化LV mkfs.ext4 /dev/vgtest/lvfile
6.挂载


查看
pvs //查看pv
pvdisplay //详细查看pv
vgs //查看vg
vgdisplay //详细查看vg
lvs //查看lv
lvdisplay //详细查看lv

LV存储目录/dev/vgtest/lvfile
/dev/mapper/vgtest-lvfile


扩展LV
首先确定vg够不够
1.vg足够的情况
lvextend /dev/vgtest/lvfile -L +1G //扩展LV
resize2fs /dev/vgtest/lvfile //扩展文件系统
如果时xfs文件系统需要使用xfs_growfs /dev/vgtest/lvfile 来扩展文件系统

2.vg不足的情况
1)添加硬盘
2)创建PV
3)扩展VG vgextend vgtest /dev/vdb3
4)扩展LV lvextend /dev/vgtest/lvfile -L +1G //扩展LV
5)扩展文件系统 resize2fs /dev/vgtest/lvfile //扩展文件系统


缩小LV
注意:rhel7 xfs文件系统不能缩小;挂载的情况下不可缩小
缩小的步骤
1.umount /media
2.检测:e2fsck -f /dev/123/lv123 //检测,总空间,可用空间
3.缩小文件系统:resize2fs /dev/123/lv123 1G //将该LV的文件系统缩小到1G
4.缩小LV:lvresize /dev/123/lv123 -L -2G //将LV空间减少2G

VG的缩小
vgreduce VG的名字 PV的位置 //从VG中取走某个PV