在Linux中有一个理念就是一切皆文件,对于Linux系统来说,无论是中央处理器、内存、磁盘驱动器、键盘、鼠标,还是用户等都是文件,Linux系统管理的命令是它正常运行的核心。
系统帮助命令
man 命令 man手册
help 命令 查看内部命令
命令 --help 查看外部命令
type 命令 判断内部/外部命令
系统关机命令
shutdown -h now 立即关机(等于poweroff、init 0)
shutdown -h 10 延迟10分钟关机
系统重启命令
shutdown -r now 立即重启(等于reset、init 6)
系统服务管理命令
systemctl start sshd 开启服务
systemctl stop sshd 关闭服务
systemctl restart sshd 重启服务
systemctl status sshd 查看服务状态
systemctl enable sshd 设置服务开机自启
systemctl disable sshd 设置服务开机禁用
系统目录相关命令
mkdir
mkdir /data /backup 创建目录
mkdir -p /a/b/c/d 多级创建
mkdir data{01..10} 创建目录序列
mkdir test{01..10..2} 创建跳序序列
mkdir {conf,log,data} 创建无序目录
cd
cd /data 切换目录
cd .. 返回上层目录
cd ~ 切换到宿主目录
cd - 回到上次cd的路径
tree
tree /data 查看目录树
rm
rmdir data01 删除空目录
rm -r /a 删除非空目录,慎用,-f强制
pwd
pwd 查看当前目录绝对路径
ls
ls 列出目录内数据信息
ls -l 长格式列出目录内数据,简写ll
ls -d 查看目录本身
ll -t 查看最新编辑文件信息,按时间排序(r反向)
ll -S 查看文件信息,按大小排序(r反向)
du -sh 查看目录大小
系统文件相关命令
touch
touch /data/file01 创建空文件
touch /data/file{1..100} 创建file1到file100(100个文件)
echo
echo "hello" 返回hello
echo "hehe" > /data/file01 覆盖文件内容,单行
echo "haha" >> /data/file01 追加文件内容,单行
cat
cat 查看文件内容
cat >> /data/file02 << EOF 编辑多行内容到文件
123
456
789
EOF
> /data/file02 清空file02文件
more、less、head、tail
more 分页显示,不能回翻
less 分页显示,可以回翻
head 看文件前几行,默认10行
tail 看文件后几行,默认10行(-f 动态追踪查看)
cp
cp /data/file01 /backup 备份文件
cp -r /data /backup 备份目录
cp -rp /data/file01 /backup 保留文件属性复制(使用该命令既可以复制文件也可以复制目录并且保留权限)
mv
mv /data/file02 /backup 移动剪切
mv /data/file01 /data/file 改名(把data目录下的file01文件在data目录改名为file)
vim
vim /data/file01 Linux编辑器
a i o 切换到输入模式(a:光标后一位输入;i:当前光标输入;o:下一行输入)
Esc 退回到命令模式
: 命令到末行模式
:wq 保存修改,等同于:x 或 命令模式下ZZ
:q! 不保存退出
:w /tmp/file01 另存为
:r /etc/passwd 把其他文件读入到当前
home键或“^”或数字“0” 跳转到行首
End键或“$” 跳转到行尾
G 跳转到末行
1G或gg 跳转到首行
:set nu 显示行号
:set nonu 取消行号
x或Del键 删除光标处单字符
dd或10dd 删除光标所在行或多行
yy或10yy 复制一行或多行
p或P 粘贴光标下一行或上一行
/hehe 命令模式查找匹配字符串,从上到下
?hehe 命令模式查找匹配字符串,从下到上
:s /hehe/haha 查找本行中第一个字符串替换
:s /hehe/haha/g 查找本行中所有字符串并替换
:% s/hehe/haha/g 查找全文所有字符串并替换
:3,5 s/hehe/haha/g 查找第3到5行所有字符串并替换
系统压缩相关命令
dd
dd if=/dev/zero of=/data/dwj.txt bs=100M count=10 创建1000M大小文件
从哪拿 拿到哪 大小 次数
zip
gzip /data/dwj.txt gzip压缩
gunzip /data/dwj.gz gunzip解压(或gzip -d)
bzip2 /data/dwj.txt bzip2压缩
bunzip2 /data/dwj.bz2 bzip2解压(或bzip2 -d)
tar
tar zcf /backup/etc-boot.tar.gz /etc /boot 归档gzip压缩一个或多个目录
tar xf /backup/etc-boot.tar.gz 解压到当前(-C 解压到其他位置)
tar jcf /backup/etc-boot.tar.bz2 /etc /boot 归档bzip2压缩一个或多个目录
tar xf /backup/etc-boot.tar.bz2 解压到当前(-C 解压到其他位置)
例:备份/etc /boot 两个目录到/backup,并标记时间戳
[root@localhost ~]# tar zcf /backup/etc_boot_$(date +%F) /etc /boot
系统别名相关命令
alias c=clear #设置别名c表示清屏{alias 别名 = 命令}
alias #查看别名
unalias c #取消别名
vim /root/.bashrc #永久配置
. /root/.bashrc #使配置文件生效
系统搜索相关命令
find /etc/ -name network 通过文件名搜索
find /etc -iname networkmanager 忽略大小写搜索
find /etc/ -name *.conf * 通配任意个字符
find /etc/ -name ?????.conf ? 通配任意一个字符
find /etc -type f 通过文件类型搜索(d目录 f文件 s套接字 b块设备 l链接)
find . -type f -atime -7 搜索最近七天内被访问过的所有文件
find . -type f -atime 7 搜索恰好在七天前被访问过的所有文件
find . -type f -atime +7 搜索超过七天内被访问过的所有文件
atime: 访问时间
mtime: 文件的内容发生变化的时间
ctime: 文件的属性发生变化的时间
-amin n 以分钟为单位
-cmin n
-mmin n
注:stat 查看文件访问更改等属性;touch -a 修改访问属性 -m 修改修改属性
find / -user lisi -type f 搜索属于lisi用户的文件
find / -group cwb -type f 搜索属于cwb组的文件
find / -type f -nouser 搜索系统中的孤儿文件(文件属主用户已被删除)
find / ! -user root -type f 搜索不属于root的文件
find / -perm -g=w -type f 查找/目录下,小组权限为可写的文件
find / -perm -222 -type f 查找目录下,用户可写 and 组可写 and 其他人可写的文件
find / -perm /222 -type f 查找目录下,用户可写 or 组可写 or 其他人可写的文件
注:u用户 g组 o其他人;r读 w写 x执行;r=4 w=2 x=1
find / -type f -size -3M 查找目录下,文件大小小于3M大小的文件
find / -type f -size 3M 查找目录下,文件大小等于3M大小的文件
find / -type f -size +3M 查找目录下,文件大小大于3M大小的文件
find /etc -name *.conf -type f -exec cp {} /backup \; 查找并备份,无提示
find /etc -name *.conf -type f -ok cp {} /backup \; 查找并备份,有提示
find /data -type f -size 0 -exec rm -rf {} \; 查找/data目录下空文件,并删除
系统排序相关命令
创建sort.txt文件,通过下面命令排序
cat >> sort.txt << EOF
b:3
c:2
a:4
e:5
d:1
f:11
EOF
cat sort.txt | sort 对输出内容直接排序,默认按照每行的第一个字符进行排序
cat sort.txt | sort -r 对输出内容进行反向排序
cat sort.txt | sort -t ":" -k 2 使用“:”做分隔符,对第2个字段进行排序
cat sort.txt | sort -t ":" -k 2 -n 使用“:”做分隔符,对第2个字段进行排序,按照数字大小排序
系统去重相关命令
创建num.txt文件,通过下面命令去重
cat >> num.txt <<EOF
111
222
333
444
555
222
333
222
EOF
sort num.txt | uniq 使用uniq时,一般先排序,再去重
sort num.txt | uniq -c 去重并显示重复次数
案例1:查询Nginx访问日志客户端IP,按访问pv数排序,列出前十
1. yum -y install nginx 2. systemctl start nginx 3. #启动nginx网站服务后,通过浏览器访问IP记录成功日志 4. cat /var/log/nginx/access.log | awk '{print $1}' | sort -r | uniq -c | head -10
案例2:查出系统进程打开文件数排行前3的进程号
lsof -Ki |awk '{print $2}' | sort |uniq -c | sort -n -r |head -3