目录
创建一个名叫123的文件,并在其中输入字符“123456789”
将文本文件中第11行和第22行的“123”全部替换成“abc”
再次给文件123创建一个abc的软连接,并删除之前的abc文件
添加一个名为raid且pe大小为1KB并含有pv:sdb sbc的vg
在一个名为raid的vg下创建一个大小为5GB的lv,lv名为linux
在一个名为raid的vg下创建一个大小为5GB,条带数量为3,条带块数大小为128K,名为windows的条带lv
在一个名为raid的vg下,为一个名为linux的lv创建一个镜像,镜像调用pv空间为pv:sde
创建1个名为123的yum源配置文件,源文件名称为abc,注释为“linux”,源路径为http:///www.baidu.com,不开启gpg密匙检测,并且开启源文件
创建一个名叫123的新用户,并且设定其家目录为/root123,且其初始化组为root,UID为10086
将目录123以及其下的子目录abc的属主属组从123:456改成abc:efg
使用户123可以cat查看/etc/shadow且只可以查看/etc/shadow
把文件f1,f2,f3打包,包名为abc,并在打包后删除源文件
将文件f1 f2 f3打包并使用gzip压缩,压缩包名abc
查询目录/root占用的磁盘空间信息并只显示目录占用空间的总和
显示当前用户的所有进程以及其所有者,进程号和父进程号并列式完整信息
显示该系统下所有用户以及所有终端的全部进程并显示进程的uid
利用select语句嵌套case语句并搭配while语句编辑脚本实现:
利用特殊语句read循环将当前目录下的文件f1的所有内容逐行显示
利用特殊语句read循环将当前目录下的文件f1的第1 3 5列内容逐行显示
1.磁盘分区
以树状结构查询磁盘信息 |
lsblk |
无重启添加scsi硬盘 |
echo “scsi add-single-device a b c d” >/proc/scsi/scsi |
无重启移除scsi硬盘 |
echo “scsi remove-single-device a b c d” >/proc/scsi/scsi |
磁盘系统文件 |
/proc/scsi/scsi |
制作文件系统 |
mkfs -t 文件类型 设备文件绝对路径 或 mkfs.文件类型 设备文件绝对路径 |
查询挂载信息 |
mount |
挂载分区 |
mount 设备文件绝对路径 挂载点 |
取消挂载 |
umount 设备文件绝对路径 |
制作swap分区 |
mkswap 设备文件绝对路径 |
开启swap功能 |
swapon 设备文件绝对路径 |
关闭swap功能 |
swapoff 设备文件绝对路径 |
使系统配置重启后依旧生效 |
vim /etc/fstab |
系统配置文件 |
/etc/fstab |
↑具体例子:
将sdb1做成ext4格式,再将sdc1做成swap格式
mkfs.ext4 /dev/sdb1
mkswap /dev/sdc1
swapon /dev/sdc1
挂载分区sdb1
mkdir /mnt/sdb1
mount /dev/sdb1 /mnt/sdb1
卸载分区sdb1
umount /dev/sdb1
编辑系统配置文件格式
第一列 /dev/sdb1(系统文件绝对路径)
第二列 /mnt/sdb1(挂载点)
第三列 ext4 (文件格式)
第四列 defaults (权限)
第五列 0或1 (是否启用系统备份dump,0为关闭,1为开启)
第六列 0或1或2(是否启用开机磁盘检查,0为关闭,1为主分区开启,2为非主分区开启)
fdisk |
|
交互式磁盘分区工具 |
|
语法格式:fdisk 设备文件名绝对路径 |
|
g |
建立gpt分区表(默认为msdos分区表) |
d |
删除分区 |
n |
新增分区 |
w |
保存退出 |
q |
不保存退出 |
p |
打印分区表 |
t |
确认分区格式编号 |
l |
查询分区格式编号 |
o |
建立 msdos 分区表 |
↑具体例子:略
2.系统服务,重启,关机,注销以及安全
查询selinux状态 |
getenforce |
停用selinux |
vim /etc/selinux/config |
selinux 配置文件 |
/etc/selinux/config |
↑具体例子:略
重启 |
reboot |
关机(数字代表延迟多少分钟) |
shutdown -h 数字 |
注销 |
exit |
↑具体例子:
5分钟后重启
shutdown -h 5
systemctl |
|
7.0或7.0以上版本linux的系统服务命令 |
|
语法格式:systemctl 动作 进程名 |
|
启动 |
statr |
重启 |
restart |
停止 |
stop |
状态查询 |
status |
开机自动关闭服务 |
enable |
开机自动开启服务 |
disable |
↑具体例子:
查询防火墙服务器状态
systemctl status firewalld
service |
|
7.0以下版本linux的系统服务命令 |
|
语法格式:service 进程名 动作 |
|
启动 |
start |
重启 |
restart |
停止 |
stop |
状态 |
status |
↑具体例子:
查询防火墙服务器状态
service firewalld status
chkconfig |
|
7.0以下版本linux的系统服务命令 |
|
语法格式:chkconfig 进程名 动作 |
|
开机自动关闭服务 |
off |
开机自动开启服务 |
on |
↑具体例子:
关闭防火墙服务
chkconfig firewalld off
3.显示目录与切换目录
ls |
|
显示目录的列式 |
|
语法格式:ls 参数 目录的绝对/相对路径 |
|
参数 -a |
显示目标目录下的所有文件,包括隐藏文件 |
参数 -R |
递归显示目标目录下所有文件 |
参数 -d |
显示目标目录以及其子目录 |
参数 -d X* |
显示本目录下所有以“X”开头的文件 |
↑具体例子:
查询根目录下的全部文件
ls /
查询根目录下的全部文件,包括隐藏文件
ls -a /
递归查询/root目录
ls -R /root
查询根目录下的全部目录
ls -d /
查询本目录下全部以c开头的文件
ls -d c*
cd |
|
切换目录 |
|
语法格式:cd 目录的绝对/相对路径 |
|
cd .. |
回到上一级目录 |
cd - |
回到上一次的目录 |
cd 绝对路径或者相对路径 |
切换到指定目录 |
↑具体例子:
跳转到根目录
cd /
跳转到mnt下的cdr
cd /mtn/cdr
4.历史记录与缓存
查看缓存中的历史命令 |
history |
再次执行缓存中记录的命令 |
!编号数字 |
清空缓存 |
history -c |
↑具体例子:
查询缓存
history
再次执行缓存中的17号命令
!17
5.创建与删除目录或文件
mkdir |
|
创建目录 |
|
语法格式:mkdir 参数 目录或文件的绝对/相对路径 |
|
参数 -p |
创建多层子目录 |
参数 -m 权限数字 |
创建一个目录并指定目录的权限 |
↑具体例子:
创建一个名叫abc的目录
mkdir abc
创建一个名叫abc的目录,并指定权限为622
mkdir -m 622 abc
创建一个名叫abc的目录,并在其下再建立一个123的子目录
mkdir -p abc/123
rm |
|
删除目录或文件 |
|
语法格式:rm 参数 目录或文件的绝对/相对路径 |
|
参数 -f |
删除文件,不需要确认 |
参数 -r |
删除目录及子目录,需要确认 |
↑具体例子:
删除一个名叫abc的文件,且不需要确认
rm -f abc
删除一个名叫123的目录,且不需要确认
rm -rf 123
touch |
更改文件访问时间,如果文件不存在,则会创建该文件 |
语法格式:touch 文件的绝对/相对路径 |
↑具体例子:
创建一个名叫123的文件
touch 123
echo |
字符输出,加以输出重定向可以创建文件 |
语法格式:echo 字符 或 echo 字符 输出重定向 文件的绝对/相对路径 |
↑具体例子:
输出字符“123456789”到屏幕上
echo “123456789”
创建一个名叫123的文件,并在其中输入字符“123456789”
echo “123456789” > f1
6.文件编辑,创建以及查看
vim |
|
文档编辑器 |
|
语法格式:vim 选项 文件的绝对/相对路径 |
|
- b |
编辑二进制文本 |
命令模式下 G |
移动光标到文本末尾 |
命令模式下 gg |
移动光标到文本开头 |
命令模式下 数字gg |
移动光标到指定数字的行 |
命令模式下 yy |
复制当前所在的一行 |
命令模式下 p |
粘贴到下一行 |
命令模式下 u |
撤销上一步操作,可以重复使用 |
命令模式下ctrl+r |
取消撤销的操作 |
命令模式下 J |
将下一行和当前行合并 |
命令模式下 % |
配对光标选中的符号 |
命令模式下 . |
重复上一次的操作 |
命令模式下 /关键字 |
查找目标 |
命令模式下 ZQ |
不保存退出 |
命令模式下 ZZ |
保存退出 |
命令模式下 i |
进入插入模式 |
命令模式下 o |
进入插入模式并把光标定在下一行 |
插入模式下 esc |
退出插入模式并回到命令模式 |
命令模式下 : |
进入末行模式 |
末行模式下 wq! |
强制保存退出 |
末行模式下 q! |
强制退出不保存 |
末行模式下 w! |
强制保存,不退出 |
末行模式下 set nu |
显示行号 |
末行模式下 set nonu |
去掉行号 |
末行模式下 /关键字 |
查找目标 |
末行模式下 w 文件名或路径 |
保存到新的文件 |
↑具体例子:略
末行模式下替换 |
|
语法格式:范围 命令 /替换目标/新字符/参数 |
|
范围 % |
所有的行 |
范围 $ |
文件最后一行 |
范围 . |
光标所在的当前行 |
范围 数字,数字 |
从指定数字行到指定数字行 |
命令 s |
查找 |
参数 g |
替换所有目标 |
参数 i |
忽略目标大小写 |
↑具体例子:
将文本文件中的“123”全部替换成“abc”
% s/123/456/g
将文本文件中的“ABC”和“abc”全部替换成“123”
% s/abc/123/gi
将文本文件中光标指定行的“123”全部替换成“abc”
. s/123/abc/g
将文本文件中光标指定行的第1个“123”替换成“abc”
. s/123/abc/
将文本文件中第11行和第22行的“123”全部替换成“abc”
11,22 s/123/abc/g
使系统内所有用户都遵从相同的vim设定 |
vi或vim或nano /etc/vimrc |
使系统内指定用户遵从指定vim设定(文件可能需要创建) |
vi或vim或nano /home/用户/.vimrc |
↑具体例子:
使所有用户vim都自动开启行号
vim /etc/vimrc 最后一行加入set nu
使用户abc的vim自动开启行号
vim /home/abc/.vimrc 最后一行加入set nu
cat |
文本查看工具 |
语法格式:cat 参数 文件的绝对/相对路径 |
↑具体例子:
查看一个叫123的文件
cat 123
less |
分屏查看且支持回翻 |
语法格式:less 文件的绝对/相对路径 或 命令 | less |
↑具体例子:
分屏显示123文件
less 123
head |
|
文本查看工具 |
|
语法格式:head 参数 文件的绝对/相对路径 或 命令 | head 参数 |
|
参数 -n 数字 |
从正数第几行开始查看 |
↑具体例子:
从正数第4行开始查看名叫123的文件
head -n 4 123
将 df -h命令的输出结果从正数第2行开始查看
df -h | head -n 2
tail |
|
文本查看工具 |
|
语法格式:tail 参数 文件的绝对/相对路径 或 命令 | tail 参数 |
|
参数 -n 数字 |
从文件倒数第几行查看 |
参数 -n +数字 |
去掉文件正数前几行开始查看 |
↑具体例子:
从倒数第4行开始查看名叫123的文件
tail -n 4 123
将 df -h命令的输出结果从倒数第2行开始查看
df -h | tail -n 2
去掉正数前3行开始查看名叫123的文件
tail -n +3 123
查看二进制文件 |
strings 文件的绝对/相对路径 |
查看文件类型 |
file 文件的绝对/相对路径 |
查看文件或目录的详细信息 |
stat 文件的绝对/相对路径 |
↑具体例子:
查看123文件的文件类型
file 123
查询/mnt下的f1文件的详细信息
sata /mnt/f1
7.复制,移动和链接
cp |
|
复制目录或文件 |
|
语法格式:cp 参数 源文件相对/绝对路径 目标地相对/绝对路径 |
|
参数 -r |
复制目录 |
参数 -p |
复制文件以及权限 |
↑具体例子:
复制一个名叫123的文件到/mnt下
cp 123 /mnt
复制一个名叫123的目录到/mnt下
cp -r 123 /mnt
复制一个名叫123的目录到/mnt下,并复制权限
cp -rp 123 /mnt
mv |
移动文件或目录 |
语法格式:mv 源文件相对/绝对路径 目标地相对/绝对路径 |
↑具体例子:
移动一个名叫123的文件到/mnt下,并改名叫abc
mv 123 /mnt/abc
ln |
|
创建硬链接或软连接 |
|
语法格式:ln 参数 源文件相对/绝对路径 链接文件相对/绝对路径 |
|
参数 -s |
软链接 |
参数 -f |
创建链接时,会删除重复名称的文件 |
↑具体例子:
给文件123创建一个abc的软连接
ln -s 123 abc
给文件123创建一个abc的硬连接
ln 123 abc
再次给文件123创建一个abc的软连接,并删除之前的abc文件
ln -sf 123 abc
8.查找
whereis |
|
快速查找,范围有限,只能查找2进制程序,文档和源码 |
|
语法格式:whereis 参数 关键字 |
|
参数 -b |
只用于查找二进制文件 |
↑具体例子:
查找123文件
whereis 123
find |
|
最强的查找工具,功能极度彪悍檎 |
|
语法格式:find 查找范围 参数 关键字 |
|
参数 -name |
查找带有指定关键字的目标 |
参数 -size |
查找指定大小的目标 |
参数 -links 数字 |
查找指定硬链接数的目标 |
参数 -name 目标 -exec 命令 {}\; |
查找带有指定关键字的目标后直接执行命令 |
参数 -name 目标 -ok 命令 {}\; |
查找带有指定关键字的目标后先确认再执行命令 |
参数 -user |
查找指定用户下的目标 |
参数 -name 目标 -fstype 文件格式 |
在指定文件类型下查找带有指定关键字的目标 |
参数 -type 文件格式 |
查找指定文件类型的目标 |
参数 -perm 权限数字 |
查找指定权限数值的目标 |
↑具体例子:
在根目录下查找一个名叫123的目标
find / -name 123
在根目录下查找所有以.gz结尾的目标
find / -name “*.gz”
在根目录下查找大小为1024KB的目标
find / -size 1024K
在根目录下查找所有的软链接文件
find / -type l
在根目录下查找权限为777的目标
find / -perm 777
在根目录下查找到名为abc的目标后直接删除不确认
find / -name abc -exec rm -rf {}\;
9.字符管理
grep |
|
通过正则表达式查找关键字所在的行 |
|
语法格式:grep 参数 关键字 目录或文件的绝对/相对路径 或 命令 | grep 参数 关键字 |
|
参数 -i |
查询关键字所在的行,并忽略大小写 |
参数 -r |
在指定目录下查询关键字所在的行 |
参数 -v |
查询关键字所在的行,并取反 |
参数 -w |
以单词为标准查询关键字所在的行 |
↑具体例子:
在文件123下查找关键字abc所在的行,并忽略大小写
grep -i abc 123
在/root目录下查找所有包含关键字abc所在的行
grep -r abc /root
将命令df -h 的输出结果去掉关键字abc并统计行数
df -h | grep -vc abc
awk |
|
通过正则表达式查找关键字所在的行或者列 |
|
语法格式:awk 参数 关键字 文件的绝对/相对路径 或 命令 | awk 参数 关键字 |
|
参数 NR==数字 |
查询指定数字的行 |
参数‘/关键字/’ |
查询关键字所在的行 |
参数‘{print $数字}’ |
查询指定数字的列(标准分隔情况下)且可以查询多列 |
参数-F “分隔符” |
用于非标准格式列的分隔符定义 |
↑具体例子:
查找文件123的第5行
awk NR==5 123
在文件123中查询关键字abc所在的行
awk ‘/abc/’ 123
将命令df -h 的输出结果取第4,7列查看
df -h | awk -F “分隔符” ‘{print $4,$7}’
sort |
|
内容排序且默认按字母正序排序 |
|
语法格式:sort 参数 文件的绝对/相对路径 或 命令 | sort 参数 |
|
参数 -k 数字 |
选取指定列为基准进行排序 |
参数 -r |
反序排序 |
参数 -n 数字 |
按数字基准进行排序 |
参数 -t “分隔符” |
非标准列格式下定义分隔符 |
↑具体例子:
将文件123的内容以第4列的字母为基准正序排序
sort -t “分隔符” -k 4 123
将文件123的内容以第2列的数字为基准反序排序
sort -t 分隔符”-nr -k 2 123
wc |
|
语法格式:wc 参数 文件的绝对/相对路径 或 命令 | wc 参数 |
|
不加参数 |
统计行数,单词数,字节数 |
参数 -l |
只统计行数 |
参数 -w |
只统计单词数 |
参数 -c |
只统计字节数 |
↑具体例子:
统计df -h 命令输出结果的行数
df -h | wc -l
sed |
|
通过正则表达式完成关键字的过滤,截取,修改 |
|
语法格式:sed 参数 关键字/动作命令 文件的绝对/相对路径 或 命令 | sed 参数 关键字/动作命令 |
|
参数 -n |
取消默认输出,只截取处理后的结果 |
参数 -i |
重新定向到源文件 |
参数 -e |
多点编辑源文件 |
动作命令d |
代表删除 |
动作命令s |
代表查找 |
动作命令g |
代表替换 |
动作命令p |
打印模式空间中的行 |
↑具体例子:
将文件123的内容截取第5行
sed -n 5 123
将文件123的内容截取第2,5行
sed -ne 2 -ne 5 123
将文件123的内容中的abc全部删除
sed -n ‘s/abc/d’ 123
将文件123中的abc全部替换成000
sed -n ‘s/abc/000/gp’
查找文件123中含有关键字abc的行
sed -n ‘/abc/p’
10.lvm
pv |
|
物理卷 |
|
添加pv |
pvcretae 磁盘系统文件绝对路径 |
删除pv |
pvremove 磁盘系统文件绝对路径 |
↑具体例子:
创建sdb和sdc的pv
pvcreate /dev/sdb /dev/sdc
创建sdb1和sdb2的pv
pvcreate /dev/sdb1 /dev/sdb2
删除sdb的pv
pvremove /dev/sdb
vg |
|
卷组(pv的集合) |
|
添加vg |
vgcretae vg名 pv绝对路径 |
添加vg并指定pe大小 |
vgcretae -s 大小单位 vg名 pv绝对路径 |
参数 -s |
指定pe大小,单位(K,M,G,T) |
删除vg |
vgremove vg名 |
移除vg中的指定pv |
vgreduce vg名 pv绝对路径 |
添加pv到vg中(扩容) |
vgextend vg名 pv绝对路径 |
↑具体例子:
添加一个名为raid且pe大小为1KB并含有pv:sdb sbc的vg
vgcreate -s 1K raid /dev/sd[b,c]
移除上述vg中的pv:sdb
vgreduce raid /dev/sdb
为上述vg添加一个pv:sdd
vgextand raid /dev/sdd
删除名为raid的vg
vgremove raid
lv |
|
vg上的虚拟磁盘 |
|
在指定vg下添加指定大小的lv |
lvcreate -L 大小单位 -n lv名 vg名 |
参数 -L |
指定lv的大小,单位(K,M,G,T) |
参数 -n |
lv名 |
删除lv |
lvremove lv绝对路径 |
添加指定大小空间到指定lv中 |
lvextend -L +数字单位 -fr lv绝对路径 |
将指定lv添加到指定大小 |
lvextend -L 数字单位 -fr lv绝对路径 |
参数 -L +数字单位 |
指定添加的空间大小,单位(M,G,T) |
参数 -L 数字单位 |
指定要达到的空间大小,单位(M,G,T) |
参数 -fr |
将加入的新空间强行格式化到旧空间的格式 |
在指定vg下建立指定空间大小的条带lv |
lvcreate -l 数字单位 -i 数字 -I 数字单位 -n lv名 vg名 |
参数 -n |
lv名 |
参数 -l |
条带lv的大小,单位(K,M,G,T) |
参数 -i 数字 |
参与条带的pv数量 |
参数 -I 数字单位 |
条带块的大小,单位(K) |
在指定vg下建立指定lv的镜像 |
lvconvert -m数字 lv绝对路径 pv绝对路径 |
参数 -m数字 |
镜像开关,0代表关闭,1代表开启 |
↑具体例子:
在一个名为raid的vg下创建一个大小为5GB的lv,lv名为linux
lvcreate -L 5G -n linux raid
将lv:linux扩容至20GB
lvextand -L 20G -fr /dev/raid/linux
将lv:linux扩容大小为5GB的空间
lvextand -L +5G -fr /dev/raid/linux
删除名为linux的lv
lvremove /dev/raid/linux
在一个名为raid的vg下创建一个大小为5GB,条带数量为3,条带块数大小为128K,名为windows的条带lv
lvcreat -l 5G -i 3 -I 128K -n windows raid
在一个名为raid的vg下,为一个名为linux的lv创建一个镜像,镜像调用pv空间为pv:sde
lvcreate -m1 /dev/raid/linux /dev/sde
11.软件包安装与卸载
查询指定软件的配置文件 |
rpm -qc 命令名 |
安装指定软件并自动安装依赖关系的软件 |
yum install 参数 命令名 |
yum 配置文件 |
/etc/yum/repos.d |
参数-y |
安装时不确认 |
升级指定软件 |
yum update 命令名 或 yum upgrade 命令名 |
查询指定软件的安装信息 |
yum info 命令名 |
查询系统内安装的全部软件 |
yum list |
清除yum缓存 |
yum clean all |
重新建立yum缓存 |
yum makecache |
查找指定命令的安装包 |
yum search 命令名 |
↑具体例子:
查询系统内全部安装包
yum list
安装一个名为gpm的软件包
yun install -y gpm
将gpm软件包升级
yun update/upgrade gpm
查询ssh软件包安装信息
yum info ssh
查询ssh命令的配置文件
rpg -qc ssh
查询telnet命令的安装包
yum search telnet
yum源配置文件格式 |
|
格式:源配置文件名.repo |
|
源文件名 |
[源文件名] |
注释 |
name=注释 |
源路径 |
baseurl=file:///路径 或 http: 或 ftp: |
是否开启源 |
enabled=1 或者0(1开启,0关闭) |
gpg密匙检测 |
gpgcheck=0 或者 1(1开启,0关闭) |
gpg路径 |
gpgkey=file:///(如果启用gpg监测,此处才添加gpg路径) |
↑具体例子:
创建1个名为123的yum源配置文件,源文件名称为abc,注释为“linux”,源路径为http:///www.baidu.com,不开启gpg密匙检测,并且开启源文件
vim 123.repo
第一行[abc]
第二行name=linux
第三行baseurl=http:///www.baidu.com
第四行enabled=1
第五行gpgcheck=0
12.用户账户与组
/etc/passwd |
|
用户信息 |
|
格式: 1:2:3:4:5:6:7 ,7列,用“:”分隔 |
|
1 |
账户名 |
2 |
密码 |
3 |
uid |
4 |
gid |
5 |
账户信息 |
6 |
用户家目录 |
7 |
使用的shell以及其所在路径 |
↑具体例子:略
/etc/shadow |
|
用户密码 |
|
格式: 1:2:3:4:5:6:7:8:9,用“:”分割 |
|
1 |
账户名 |
2 |
密码 |
3 |
密码自新纪元开始到前一次修改密码的天数 |
4 |
距离下次修改密码的天数 |
5 |
密码最大有效时间 |
6 |
密码失效前多少天提示用户 |
7 |
密码最大宽限天数 |
8 |
帐号有效期 |
9 |
保留 |
↑具体例子:略
useradd或adduser |
|
添加用户 |
|
语法格式:useradd 参数 用户名 或 adduser 参数 用户名 |
|
参数 -d |
指定新用户的家目录 |
参数 -g |
指定新用户的初始化组 |
参数 -G |
指定新用户的其他组资格 |
参数 -s |
指定新用户使用的shell |
参数 -u |
指定新用户的uid |
↑具体例子:
创建一个名叫123的新用户,并且设定其家目录为/root123,且其初始化组为root,UID为10086
useradd -d /root123 -g root -u 10086 123
passwd |
|
修改密码 |
|
语法格式:passwd 参数 用户名 |
|
-d |
清空密码 |
↑具体例子:
为123用户设定密码,密码为123456
passwd 123
123456
123456
将用户123的密码清空
passwd -d 123
usermod |
|
更改用户 |
|
语法格式:usermod 参数 用户名 |
|
-aG |
添加到指定的标准组 |
-l |
改名 先写新用户名 后写旧用户名 |
-dm |
移动用户主目录到新的目录 |
↑具体例子:
为用户123改名为abc
usermod -l abc 123
userdel |
|
删除用户 |
|
语法格式:userdel 参数 用户名 |
|
-r |
清除用户的所有数据 |
↑具体例子:
删除用户abc并清空其所有数据
userdel -r abc
显示当前登陆的用户 |
w |
显示当前登陆的用户以及信息 |
who |
显示当前使用账户信息 |
whoami |
显示当前账户最后登陆时间 |
last |
显示所有用户最后的登陆时间 |
lastlog |
查询当前主机名 |
hostname |
↑具体例子:略
etc/group |
|
组信息 |
|
格式: 1:2:3:4,用“:”分隔 |
|
1 |
组名 |
2 |
组密码 |
3 |
gid |
4 |
组成员 |
↑具体例子:略
etc/gshadow |
|
组密码 |
|
格式: 1:2:3:4,用“:”分隔 |
|
1 |
组名 |
2 |
组密码 |
3 |
组管理员 |
4 |
组成员资格 |
↑具体例子:略
groupadd |
|
添加组 |
|
语法格式:groupadd 参数 组名 |
|
-g |
指定gid |
↑具体例子:
创建一个名为abc的组,并指定gid为10086
groupadd -g 10086 abc
groupmod |
|
修改组 |
|
语法格式:groupmod 参数 组名 |
|
-n |
改组名 先写新组名 再写旧组名 |
↑具体例子:
将组abc改名为123
groupmod -n 123 abc
groupdel |
删除组 |
语法格式:groupdel 参数 组名 |
↑具体例子:
删除组123
groupdel 123
gpasswd |
改组密码 |
语法格式:gpasswd 参数 组名 |
↑具体例子:
为组abc创建密码123456
gpasswd abc
123456
123456
newgroup |
临时切换组 |
语法格式:newgroup 新组名 |
↑具体例子:
将当前用户的私有组临时切换到组abc
newgroup abc
13.权限管理
chmod |
|
更改文件或目录的权限 |
|
语法格式:chmod 参数 权限数字 目标文件/目录的绝对/相对路径 |
|
-R |
递归修改 |
↑具体例子:
将目录123以及其下的子目录abc的权限修改为777
chmod -R 777 /123
chown |
|
更改目录或文件的属组以及属主 |
|
语法格式:chown 参数 属主/.属组/属主:属组 目标文件/目录的绝对/相对路径 |
|
-R |
递归修改 |
↑具体例子:
将目录123以及其下的子目录abc的属主属组从123:456改成abc:efg
chown -R abc:efg /123
lsattr |
|
显示文件或目录的隐藏属性 |
|
语法格式:lsattr 参数 目标文件/目录的绝对/相对路径 |
|
-aR |
递归显示所有目录或文件的隐藏属性 |
↑具体例子:
显示目录123以及其下的子目录abc的隐藏属性
lsattr -aR /123
chattr |
|
修改文件或目录的隐藏属性 |
|
语法格式:chattr 参数 运算符 属性 目标文件/目录的绝对/相对路径 |
|
-R |
递归修改所有目录或文件的隐藏属性 |
运算符 |
+,-,= |
属性i |
只读 |
属性a |
可追加内容,不可修改,不可删除,不可改名 |
↑具体例子:
将目录123以及其下的子目录abc的隐藏属性修改为只读
chattr -R + i /123
切换用户并使用新用户的shell |
su - 切换的新用户名 |
切换用户并使用原用户的shell |
su 切换的新用户名 |
↑具体例子:
从管理员切换到用户123并使用123的shell
su - 123
从管理员切换到用户123并使用root的shell
su 123
set 位 |
|
特殊的权限标识 |
|
格式: set位 权限数字 |
|
suid |
对可执行程序设置 权限字母表示为s 意义为使其他用户以属主的身份执行该文件 权限数字表示为4 |
sgid |
对可执行程序设置 权限字母表示为s 意义为使其他用户以属组的身份执行该文件 权限数字表示为2 |
sticky |
对目录设置 权限字母表示为t 意义为使目录仅有属主可以操作 权限数字表示为1 |
无set位权限 |
数字表示为0 |
↑具体例子:
对文件123的权限777设置suid权限
chmod 4777 /123
对文件123的权限777设置sgid权限
chmod 2777 /123
对目录123的权限777设置sticky权限
chmod 1777 /123
sudo |
|
使非root用户以root身份执行命令 |
|
格式:普通用户名 当前主机名=命令的绝对路径 |
|
配置文件 |
/etc/sudoers |
修改配置文件 |
visudo -f /etc/sudoers(需要root才可以修改) |
↑具体例子:
使用户123可以cat查看/etc/shadow且只可以查看/etc/shadow
visudo -f /etc/sudoers
在## Allows people in group wheel to run all commands下添加一行
123 admin=/usr/bin/cat /etc/shadow
acl |
|
访问控制列表 |
|
语法格式:setfacl 参数 u:用户名:权限/g:组名:权限数字 目标文件/目录的绝对/相对路径 |
|
查看目标acl信息 |
getfacl 目标 |
参数 -m |
对目标设定acl(必填参数) |
参数 -R |
对目标递归设定acl(必须写在最前) |
参数 -d |
使目标下所有子目录以及文件默认继承目标acl设定 |
参数 -x |
删除目标的指定acl设定 |
参数 -b |
完全删除目标的所有acl设定 |
↑具体例子:
使用户123可以查看root用户的家目录以及其子目录
setfacl -Rm u:123:7 /root
查看文件123的acl信息
getfacl 123
14.打包,压缩与备份
tar |
|
文件打包 |
|
语法格式:tar 参数 包名.tar 打包目标 追加动作 |
|
参数 c |
新建包文件 |
参数 f |
使用归档文件(必填参数) |
参数 x |
解包 |
参数 t |
查看包内文件 |
参数 -C |
指定解包路径 |
参数 A |
将包文件追加到另一个包文件 |
参数 r |
将文件追加到包文件 |
追加动作 --remove-files |
打包并删除源文件 |
追加动作 --get |
提取包内指定文件 |
追加动作 --delete |
删除包内指定文件 |
参数 z |
打包并压缩,指定压缩格式为gzip |
参数 j |
打包并压缩,指定压缩格式为bzip2 |
参数 J |
打包并压缩,指定压缩格式为xz |
↑具体例子:
把文件f1,f2,f3打包,包名为abc,并在打包后删除源文件
tar cf abc.tar f1 f2 f3 --remove-files
把文件f4追加到包abc.tar中
tar fr abc.tar f4
将包文件abc.tar解包到/root下
tar xf abc.tar -C /root
把包文件123.tar到包abc.tar中
tar fA abc.tar 123.tar
把包文件abc.tar中的f2解包
tar fx abc.tar f2 --get
把包文件abc.tar中的f1删除
tar f abc.tar f1 --delete
将文件f1 f2 f3打包并使用gzip压缩,压缩包名abc
tar cfz abc.tar.gz f1 f2 f3
将xz格式压缩包123解压缩并解包
tar xfJ 123.tar.xz
gzip格式压缩 |
gzip 参数 目标 |
gzip 格式解压缩 |
gunzip 参数 目标 |
bzip2 格式压缩 |
bzip2 参数 目标 |
bzip2 格式解压缩 |
bunzip2 参数 目标 |
xz 格式压缩 |
xz 参数 目标 |
xz 格式解压缩 |
unxz 参数 目标 |
zip 格式压缩 |
zip 参数 包文件名 目标 |
参数 -r |
压缩目录 |
zip 格式解压缩 |
unzip 目标 |
↑具体例子:
将文件f1以bzip2格式压缩
bzip2 f1
将gzip格式压缩包123解压缩
gunzip 123.gz
将目录/root压缩
zip -r root.zip /root
15.系统备份
完全备份 |
将数据整体全部备份 |
增量备份 |
仅备份和上次备份有变化的数据 |
差异备份 |
仅备份和上次完全备份数据有变化的数据 |
↑具体例子:略
dump |
|
文件备份 |
|
语法格式:dump 备份级别数字参数 存储备份文件的设备文件绝对路径 需要备份的文件绝对/相对路径 |
|
参数 -W |
显示备份信息 |
参数 -f |
指定用于备份的设备(必备参数) |
参数 -u |
备份文件的同时记录备份的时间信息 |
备份级别数字 |
用于确定备份方式,从0到9 |
↑具体例子:
将目录/mnt完全备份到硬盘sdc上,同时记录备份时间信息
dump -0uf /dev/sdc /mnt
将目录/mnt差异备份到硬盘sdc上,同时记录备份时间信息
dump -1uf /dev/sdc /mnt
将目录/mnt增量备份到硬盘sdc上,同时记录备份时间信息
dump -2uf /dev/sdc /mnt
显示备份信息
dump -W
restore |
|
文件还原 |
|
语法格式:restore 参数 存储备份文件的设备文件绝对路径 需要还原的文件名 |
|
参数 -f |
指定用于还原的备份设备(必备参数) |
参数 -r |
指定还原操作 |
参数 -x |
还原备份中的指定文件 |
参数 -t |
显示备份中的具体文件 |
↑具体例子:
查看备份文件
restore -tf /dev/sdc
恢复文件f1
restore -frx /dev/sdc f1
恢复所有备份文件
restore -fr /dev/sdc
16.系统资源管理
du |
|
查询文件或目录使用磁盘空间情况 |
|
语法格式:du 参数 目标文件/目录的绝对/相对路径 |
|
参数 -h |
人性化显示大小单位 |
参数 -s |
只显示目录占用空间的总和 |
↑具体例子:
查询目录/root占用的磁盘空间信息并人性化显示
du -h /root
查询目录/root占用的磁盘空间信息并只显示目录占用空间的总和
du -hs /root
df |
|
查询分区使用情况 |
|
语法格式:df 选项 参数 |
|
参数 -h |
人性化显示大小单位 |
参数 -i |
查询i节点使用情况 |
参数 -t |
指定格式化类型 |
参数 -T |
显示所有分区文件类型 |
↑具体例子:
显示所有分区的格式化类型
df -T
显示所有分区使用情况并人性化显示
df -h
显示所有ext4分区使用情况并人性化显示
df -h -t ext4
显示所有分区i节点使用情况并人性化显示
df -ih
ps |
|
查看进程详情 |
|
语法格式:ps 参数 |
|
参数 e |
显示所有进程 |
参数 f |
列式完整信息 |
参数 l |
显示进程所属者,进程号和父进程号 |
参数 a |
显示当前终端下所有用户的所有进程 |
参数 x |
显示非当前终端下的所有进程 |
参数 u |
显示进程的uid或者用户 |
↑具体例子:
显示当前用户的所有进程以及其所有者,进程号和父进程号并列式完整信息
ps elf
显示当前终端下所有用户的进程并显示进程的uid
ps au
显示该系统下所有用户以及所有终端的全部进程并显示进程的uid
ps aux
kill |
|
通过pid或jobs编号控制进程 |
|
语法格式:kill 参数 pid 或 kill 参数 %数字 |
|
参数 -l |
查询所有的kill信号 |
参数 -9 |
信号9,代表强制删除进程 |
参数 %数字 |
删除进程,数字代表jobs编号数字 |
↑具体例子:
强制删除uid号为110的进程
kill -9 110
强制删除jobs编号为3的进程
kill -9 %3
top |
|
任务管理器 |
|
内置命令 q |
退出top |
内置命令 空格 |
立即刷新结果 |
内置命令 s |
设置刷新时间 |
内置命令 M |
根据内存使用情况排序 |
内置命令 P |
根据CPU使用情况排序 |
内置命令 b |
高亮显示 |
内置命令 x |
开启/关闭 高亮序排列(需要先开启b) |
内置命令 shift > |
高亮列右移 |
内置命令 shift < |
高亮列左移 |
↑具体例子:略
前后台以及挂机 |
|
后台运行 |
命令 & 或 bg 命令 |
查看后台情况 |
jobs |
挂起或后台进程掉回前台 |
fg 数字编号(jobs编号) |
挂起 |
命令 ctrl+z |
挂起掉回后台 |
bg 数字编号(jobs编号) |
↑具体例子:
把ping命令的进程切换到后台运行
bg ping 10.195.0.1 或者ping 10.195.0.1 &
把后台的ping进程掉回前台运行
fg 2
把ping命令的进程挂起
ping 10.195.0.50 ctrl+z
把挂起的ping进程掉回后台运行
bg 2
查询内存使用情况并人性化显示 |
free -h |
查询cpu使用情况 |
sar 数字(刷新间隔)数字(显示次数) |
显示被进程打开的文件 |
lsof |
显示系统不间断运行时间以及1,5,15分钟时的负载情况 |
uptime |
↑具体例子:略
17.计划任务
at |
|
一次性的计划任务 |
|
格式: |
|
at 参数(日期MMDDYY)(时间HH:MM) |
|
at > 命令 |
|
ctrl+d 结束 |
|
查看qt队列 |
atq 或 /var/spool/at |
执行at队列中的任务 |
at -c 数字编号(atq队列编号) |
删除at队列中的任务 |
atrm 数字编号(atq队列编号) |
↑具体例子:
编辑计划任务,在1111年1月1日1点1分重启设备
at 01011111 01:01
at > reboot
ctrl+d
执行at队列中的第3条任务
at -c 3
删除at队列中的第7条任务
atrm 7
at 限制文件与规则 |
/etc/at.deny 和 /etc/at.allow |
当2个文件都在时,看allow文件,只有文件中有的用户才可以执行at命令 |
当只有deny文件在时,看deny文件,只有文件中没有的用户才可以执行at命令 |
如果2个文件都不在,则只有root用户才可以执行at命令 |
↑具体例子:略
cron |
||||||
周期性的计划任务 |
||||||
语法格式:crontab 参数 |
||||||
参数 -e |
编辑计划任务 |
|||||
参数 -l |
查看计划任务 |
|||||
参数 -r |
删除计划任务 |
|||||
参数 -u |
指定用户名的计划任务(仅root用户可以操作) |
|||||
编辑格式 |
||||||
分 |
时 |
日 |
月 |
星期 |
命令的绝对路径 |
↑具体例子:
为当前用户创建计划任务在每天0点0分重启系统
crontab -e
0 0 * * * /usr/sbin/reboot
删除当前用户的第4个计划任务
crontab -r 4
为用户abc创建计划任务,在每周1的0点0分重启系统
crontab -e -u abc
0 0 * * 1 /usr/sbin/reboot
cron 限制文件与规则 |
/etc/cron.deny 和 /etc/cron.allow |
当2个文件都在时,看allow文件,只有文件中有的用户才可以执行cron命令 |
当只有deny文件在时,看deny文件,只有文件中没有的用户才可以执行cron命令 |
如果2个文件都不在,则只有root用户才可以执行crom命令 |
↑具体例子:略
18.shell
系统的变量控制文件 |
|
/etc/bashrc和/etc/profile |
|
用户的变量控制文件 |
|
/用户家目录/.bashrc和/用户家目录/.bash-profile |
|
优先选择用户的环境变量控制文件参数 |
|
查看所有环境变量 |
set |
查看系统环境变量 |
env |
取消指定环境变量值 |
unset 变量名 |
本级shell声明环境变量 |
set 变量名 |
全局shell声明环境变量 |
export 变量名 |
临时修改环境变量 |
变量名 = |
永久修改环境变量 |
vim /etc/profile 或 /etc/bashrc |
↑具体例子:
在本级shell声明变量a
set a
在全局shell声明变量a
export a
取消变量a的赋值
unset a
临时修改变量a的赋值为123
a=123
判断语句 |
|
if |
|
语法格式:如下 |
|
if [ 条件1 ]; |
如果为真时 |
then |
则 |
命令 |
内容 |
elif [ 条件2 ]; |
如果条件1不为真且条件2为真时(可重复多次判断) |
then |
则 |
命令 |
内容 |
else; |
如果所有条件都不为真时 |
命令 |
内容 |
fi |
结束标志 |
↑具体例子:
利用if语句编辑脚本实现:
当输入aaa时显示123
当输入bbb时显示456
当输入为其他时显示789
#!/bin/bash
echo “请输入aaa或bbb”
read a
if [ $a = aaa ];
then
echo “123”
elif [ $a = bbb ];
then
echo “456”
else
echo “789”
fi
判断语句 |
|
case |
|
语法格式:如下 |
|
case 变量名 in |
在变量中选择多组匹配值 |
匹配1) |
匹配值1时 |
命令 |
内容 |
;; |
结束 |
匹配2) |
匹配值2时(可匹配所有变量的值) |
命令 |
内容 |
;; |
结束 |
不匹配) |
所有值都不匹配时 |
命令 |
内容 |
;; |
结束 |
esac |
结束标志 |
↑具体例子:
利用case语句编辑脚本实现:
当输入1的时候显示aaa
当输入2的时候显示bbb
当输入3的时候显示ccc
当输出其他的时候显示no
#!/bin/bash
echo “请输入1或2或3”
read a
case $a in
1)
echo “aaa”
;;
2)
echo “bbb”
;;
3)
echo “ccc”
;;
*)
echo “no”
esac
循环语句 |
|
while |
|
语法格式:如下 |
|
while [ 条件 ] |
条件为真时,开始循环,条件为假时,停止循环 |
do |
则 |
命令 |
内容 |
done |
结束标识 |
↑具体例子:
利用while语句编辑脚本实现:
只有当输入小于3的整数时显示yes
#!/bin/bash
echo “请输入一个小于3的整数”
read a
while ((a<3))
do
ehco “yes”
break
done
循环语句 |
|
until |
|
语法格式:如下 |
|
until [ 条件 ] |
条件为假时,开始循环,条件为真时,停止循环 |
do |
则 |
命令 |
内容 |
done |
结束标识 |
↑具体例子:
利用until语句编辑脚本实现:
只有当输入小于3的整数时显示yes
#!/bin/bash
echo “请输入一个小于3的整数”
read a
until ((a>=3))
do
ehco “yes”
break
done
循环语句 |
|
for |
|
语法格式:如下 |
|
for 变量名 in 关键字 |
在变量中选取指定关键字依次匹配,全部关键字匹配完后,停止循环 |
do |
则 |
命令 |
内容 |
done |
结束标识 |
↑具体例子:
利用for语句编辑脚本实现:
输入任意3个字符再把3个字符后加hello并显示
#!bin/bash
echo “请输入任意第一个字符”
read a
echo “请输入任意第二个字符”
read b
echo “请输入任意第三个字符”
read c
for b in $a $b $c
do
ehco $b hello
done
循环语句 |
|
select |
|
语法格式:如下 |
|
select 变量名 in 关键字 |
在变量中选取指定关键字做交互菜单选择匹配,一般嵌套case使用 |
do |
则 |
命令 |
内容 |
done |
结束标识 |
↑具体例子:
利用select语句嵌套case语句并搭配while语句编辑脚本实现:
输入1时显示a
输入2时显示b
输入3时显示c
输入4时退出
#!/bin/bash
b=1
while [ $b -eq 1 ]
do
select a in 1 2 3 4
do
case $a in
1)
echo “a”
2)
echo “b”
3)
echo “c”
4)
b=2
esac
break
done
done
特殊循环语句:read循环 |
|
s |
|
仅针对标准列格式文件循环处理 |
|
语法格式:如下 |
|
while read 变量名 |
指定一个变量,代表一次读取一行,读取全部的列,若指定多个变量,则代表一次读取一行,读取指定的列 |
do |
则 |
命令 |
内容 |
done < 目标绝对路径 |
固定格式,代表需要处理的目标 |
↑具体例子:
利用特殊语句read循环将当前目录下的文件f1的所有内容逐行显示
#!/bin/bash
while read a
do
echo $a
done <./f1
利用特殊语句read循环将当前目录下的文件f1的第1 3 5列内容逐行显示
#!/bin/bash
while read a b c d e f
do
echo $a,$c,$e
done <./f1
特殊语句: |
|
sleep 数字单位 |
代表延迟多久执行一次,单位s m h d n,对应秒 分 小时 天和具体时间 |
read 参数 变量名 |
将键盘输入内容赋值给制定变量 |
参数 -n 数字 |
输入的字符数最多为指定数字 |
参数 -s |
输入时屏幕不显示输入内容 |
双小括号 (( )) |
代表其中的值做数学运算,括号内的变量不需要加$也可以提取值 |
变量名=$(( )) |
给变量赋值,其数值为数学计算结果 |
${变量名%%字符*} |
删除第一个“字符”右侧的所有值 |
${变量名##*字符} |
删除最后一个“字符”左侧的所有值 |
break |
自动跳出循环 |
bash 脚本名 |
使用/测试 脚本 |
↑具体例子:略
控制语句: |
|
字符串 = 字符串 |
字符串等于时为真 |
字符串 ! = 字符串 |
字符串不等于时为真 |
-z 字符串 |
字符串长度为0时为真 |
-n 字符串 |
字符串长度不为0时为真 |
-e 文件绝对路径 |
文件存在时为真 |
-d 目录绝对路径 |
目录存在时为真 |
-eq 数字 |
数值等于时为真 |
-ne 数字 |
数值不等于时为真 |
-gt 数字 |
数值大于时为真 |
-ge 数字 |
数值大于等于时为真 |
-lt 数字 |
数值小于时为真 |
-le 数字 |
数值小于等于时为真 |
↑具体例子:略
19.系统启动与排故
grubz中切换启动级别 |
开机 |
选择需要启动的系统 |
按e |
找到linux16语句 |
在语句末尾空格并添加systemd.unit=resuce.targer |
ctrl+x退出 |
重启 |
进入安全模式 |
切换运行级别 |
systemctl set-default-...... |
reboot重启 |
↑具体例子:略
破解root密码 |
开机 |
选择需要启动的系统 |
按e |
找到linux16语句中的ro |
把ro改成rwinit=/sysroot/bin/sh |
或者语句末尾空格加rd.break |
ctrl+x退出 |
输入mount -o remount,rw/sysroot切换到/sysroot |
输入chroot/sysroot/bin/bash 注1: |
passwd 输入新密码 |
exit退出 |
reboot重启 |
注1:如果selinux未关闭 |
则需要在/sysroot下创建.autorelabel |
touch /.autorelabel |
↑具体例子:略
为grub加密(明文) |
修改 /etc/grub.d/00_header |
在文件末位新起一行开始写入 |
cat << EOF |
set superusers=“abc” |
password abc 123456 注1: |
EOF |
退出编辑 |
再重新生成grub.cfg |
输入grub2-mkconfig >/boot/grub2/grub.cfg |
注1:如果需要密文加密 |
则生成密文密码grub2-mkpasswd-pbkdf2 |
再将生成的密文粘贴到密码处 |
↑具体例子:略