30 个 Linux 命令组合:解决 99% 日常运维需求,看完就能用!

下面 30 个组合,按 “系统监控、日志分析、文件管理、进程管理、网络排查、权限审计”6 大高频场景分类,每个组合都来自真实运维场景,附带具体操作案例,新手也能直接复制使用。

一、系统监控与资源排查类(6 个):快速定位资源瓶颈
日常运维中,“系统负载高”“磁盘满”“内存不够用” 是最常见的告警,这 6 个组合能帮你 1 分钟找到问题根源。

  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)。

  1. 组合: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。

  1. 组合: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若在使用,需先切割再删除)。

  1. 组合: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%)。

  1. 组合: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),再替换命令中的网卡名。

  1. 组合: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 个组合能帮你快速提取有用数据。

  1. 组合: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格式)。

  1. 组合: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看日志结构)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值