下面 30 个组合,按 “系统监控、日志分析、文件管理、进程管理、网络排查、权限审计”6 大高频场景分类,每个组合都来自真实运维场景,附带具体操作案例,新手也能直接复制使用。
一、系统监控与资源排查类(6 个):快速定位资源瓶颈
日常运维中,“系统负载高”“磁盘满”“内存不够用” 是最常见的告警,这 6 个组合能帮你 1 分钟找到问题根源。
- 组合:**top -b -n 1 | grep Cpu | awk ‘{print “CPU使用率:”$2"%"}’ && free -h | grep Mem | awk ‘{print “内存使用率:”$3"/“$2”(“KaTeX parse error: Expected 'EOF', got '}' at position 7: 7"空闲)"}̲' && df -h | gr… | awk '{print “根分区使用率:”$5”(“KaTeX parse error: Expected 'EOF', got '}' at position 7: 4"空闲)"}̲'** 场景说明 刚登录服务器…:只看根分区(避免显示其他挂载点),提取使用率和空闲空间。
实战案例
[root@web01 ~]# top -b -n 1 | grep Cpu | awk '{print “CPU使用率:”$2”%"}’ && free -h | grep Mem | awk ‘{print “内存使用率:”$3"/“$2”(“$7"空闲)”}’ && df -h | grep /$ | awk ‘{print “根分区使用率:”$5"(“$4"空闲)”}’
CPU使用率:12.3%
内存使用率:1.2Gi/7.7Gi(6.3Gi空闲)
根分区使用率:45%(50G空闲)
注意事项• 若根分区挂载点不是/(比如特殊系统),需把grep /$改成实际挂载点(如grep /root)。
- 组合:ps -eo pid,ppid,%cpu,%mem,cmd --sort=-%cpu | head -10
场景说明
系统 CPU 使用率突然飙升到 80% 以上,要快速找出 “吃 CPU 最多的前 10 个进程”,看是不是异常进程(如挖矿程序)。
命令解析
• ps -eo:自定义输出字段(pid = 进程 ID,ppid = 父进程 ID,% cpu=CPU 占比,% mem = 内存占比,cmd = 进程命令);
• --sort=-%cpu:按 CPU 占比倒序排列(-表示倒序);
• head -10:只显示前 10 条,避免输出过长。
实战案例
[root@web01 ~]# ps -eo pid,ppid,%cpu,%mem,cmd --sort=-%cpu | head -10
PID PPID %CPU %MEM CMD
12345 1 35.2 8.5 /usr/bin/java -jar app.jar # 发现Java进程占CPU最高
12367 12345 12.1 2.3 /usr/bin/python3 monitor.py
…
注意事项• 若想查 “吃内存最多” 的进程,把–sort=-%cpu改成–sort=-%mem。
- 组合:find / -type f -size +100M 2>/dev/null | xargs du -sh | sort -hr
场景说明
收到 “根分区使用率 90%” 的告警,要快速找到 “大于 100M 的大文件”,看是不是日志没切割或临时文件没清理。
命令解析
• find / -type f -size +100M:从根目录找所有大小超过 100M 的文件(-type f指定文件,避免目录);• 2>/dev/null:忽略权限不足的报错(比如/proc目录下的文件);
• xargs du -sh:对找到的文件逐个计算大小(-s单文件,-h人性化显示);
• sort -hr:按大小倒序排列(-h识别 “G/M” 单位,-r倒序)。
实战案例
[root@web01 ~]# find / -type f -size +100M 2>/dev/null | xargs du -sh | sort -hr
5.2G /var/log/nginx/access.log # 发现Nginx访问日志没切割,占5.2G
800M /tmp/large_file.tar.gz
…
注意事项
• 若想找 “大于 1G” 的文件,把+100M改成+1G;
• 删除大文件前先确认用途(比如access.log若在使用,需先切割再删除)。
- 组合:vmstat 1 5 | awk ‘NR>1 {print “平均等待IO时间:”$16"ms 等待IO进程数:“$17"个”}’
场景说明
系统响应变慢,但 CPU、内存使用率都不高,怀疑是 “磁盘 IO 瓶颈”,要查看 IO 等待情况。
命令解析
• vmstat 1 5:每 1 秒输出 1 次系统 IO 状态,共输出 5 次(避免单次数据不准);
• NR>1:跳过 vmstat 的表头行;
• $16:vmstat 输出中 “wa” 字段(IO 等待时间,单位 ms),$17:“st” 字段(等待 IO 的进程数)。实战案例
[root@web01 ~]# vmstat 1 5 | awk ‘NR>1 {print “平均等待IO时间:”$16"ms 等待IO进程数:“$17"个”}’
平均等待IO时间:2ms 等待IO进程数:0个
平均等待IO时间:3ms 等待IO进程数:0个
… # 若wa持续超过10ms,说明IO有瓶颈
注意事项
• 若 wa 长期超过 20ms,需进一步用iostat -x 1查看具体磁盘的 IO 情况(如sda的 util% 是否接近 100%)。
- 组合:sar -n DEV 1 3 | grep -v Average | awk ‘/eth0/ {print “网卡eth0:接收”$5"KB/s 发送"$6"KB/s"}’
场景说明
服务器带宽跑满,要查看 “指定网卡(如 eth0)的实时流量”,判断是接收还是发送流量过高。
命令解析
• sar -n DEV 1 3:每 1 秒输出 1 次网卡流量,共 3 次(-n DEV指定网卡统计);
• grep -v Average:排除最后一行的平均值(只看实时数据);
• awk '/eth0/:只过滤 eth0 网卡的行,$5是接收流量(rxkB/s),$6是发送流量(txkB/s)。
实战案例
[root@web01 ~]# sar -n DEV 1 3 | grep -v Average | awk ‘/eth0/ {print “网卡eth0:接收”$5"KB/s 发送"$6"KB/s"}’
网卡eth0:接收1200KB/s 发送300KB/s
网卡eth0:接收1350KB/s 发送280KB/s
… # 若接收流量持续超过10000KB/s(约100Mbps),可能是被攻击
注意事项
• 先通过ip addr确认网卡名(如 centos7 可能是ens33,不是eth0),再替换命令中的网卡名。
- 组合:w | awk ‘NR>1 {print “登录用户:”$1" 登录IP:“$3” 登录时间:"$4}’
场景说明
怀疑服务器有非法登录,要查看 “当前在线的用户”,包括用户名、登录 IP 和时间,判断是否有异常账号。
命令解析
• w:查看当前登录用户及操作;
• NR>1:跳过 w 的表头;
• $1是用户名,$3是登录 IP(若本地登录是localhost),$4是登录时间。
实战案例
[root@web01 ~]# w | awk ‘NR>1 {print “登录用户:”$1" 登录IP:“$3” 登录时间:"$4}’
登录用户:root 登录IP:192.168.1.100 登录时间:10:23
登录用户:admin 登录IP:10.0.0.5 登录时间:11:05 # 若IP不在信任列表,需排查
注意事项
• 若想查 “历史登录记录”,改用last -n 10(显示最近 10 次登录)。
二、日志分析与数据提取类(6 个):从海量日志中抓关键信息
运维中 80% 的问题排查要靠日志,但日志动辄几百 MB,靠 “逐行看” 根本不现实,这 6 个组合能帮你快速提取有用数据。
- 组合:grep -i “error” /var/log/nginx/error.log | grep -E “2025-09-08” | wc -l
场景说明
Nginx 服务报 500 错误,要统计 “9 月 8 日当天的 error 日志条数”,判断错误是偶尔出现还是持续爆发。
命令解析
• grep -i “error”:忽略大小写找含 “error” 的行(避免漏 “Error”“ERROR”);
• grep -E “2025-09-08”:用正则匹配指定日期(日志需带时间戳,Nginx 默认日志格式含日期);
• wc -l:统计符合条件的行数(即错误次数)。
实战案例
[root@web01 ~]# grep -i “error” /var/log/nginx/error.log | grep -E “2025-09-08” | wc -l
128 # 9月8日共128条错误日志,需进一步看具体错误
注意事项
• 若日志时间格式是 “09/Sep/2025”,需把日期改成"08/Sep/2025"(对应 Nginx 的%d/%b/%Y格式)。
- 组合:grep “500” /var/log/nginx/access.log | awk ‘{print $1,$7,$9}’ | sort | uniq -c | sort -nr | head -10
场景说明
监控显示 “Nginx 500 错误率上升”,要找出 “出现 500 错误最多的前 10 个 IP 和 URL”,判断是单个 IP 异常访问还是特定接口有问题。
命令解析
• grep “500”:过滤状态码为 500 的请求($9是 Nginx 日志的状态码字段);
• awk ‘{print $1,$7,$9}’:提取 IP($1)、URL($7)、状态码($9);
• sort | uniq -c:按 “IP+URL” 去重并统计次数(uniq -c计数);
• sort -nr:按次数倒序,head -10取前 10。
实战案例
[root@web01 ~]# grep “500” /var/log/nginx/access.log | awk ‘{print $1,$7,$9}’ | sort | uniq -c | sort -nr | head -10
23 192.168.1.200 /api/pay 500 # 该IP访问支付接口500错误23次
18 10.0.0.8 /api/order 500
…
注意事项
• 需确认 Nginx 日志格式:若自定义格式中 IP 不是$1、URL 不是$7,需调整awk的字段序号(可先head -1 access.log看日志结构)。

最低0.47元/天 解锁文章
278

被折叠的 条评论
为什么被折叠?



