linux性能巡检脚本用shell实现,核心包括cpu(用户/系统态占比、归一化负载)、内存(memavailable、swap活动及swappiness)、磁盘(df空间与iostat i/o瓶颈)、网络(连接数、tcp错误)及进程(高资源占用、服务状态)四大模块检查,并统一标记结果。

Linux 系统性能巡检脚本的核心是定期采集关键指标、判断阈值、输出可读结果,不依赖复杂框架,用 shell 就能高效完成。
CPU 使用率与负载检查
重点关注 top -bn1 或 mpstat 输出的用户态/系统态 CPU 占比,以及 1/5/15 分钟平均负载。避免只看单次 uptime——需结合 CPU 核心数判断负载是否真实过载(如 4 核机器负载持续 > 3.5 才需告警)。
- 用
awk '{print $9}' /proc/stat | head -1提取空闲时间比例,反推整体使用率 - 用
cat /proc/loadavg | awk '{print $1}'获取 1 分钟负载,对比nproc结果做归一化判断 - 若发现
%sy(系统态)长期高于 30%,可能有频繁上下文切换或内核瓶颈,需进一步查pidstat -w
内存与交换空间监控
重点不是“可用内存”多少,而是 MemAvailable 是否充足、是否有持续 swap in/out 活动。Linux 的 cache/buffer 会自动释放,free -h 中的 available 列才是真实可用值。
- 从
/proc/meminfo提取MemAvailable和SwapTotal、SwapFree,计算 swap 使用率 - 当
SwapFreepgpgin/pgpgout 每秒增长 > 100KB,说明内存压力已触发频繁换入换出 - 补充检查
/proc/sys/vm/swappiness值是否合理(生产环境建议设为 1–10)
磁盘 I/O 与空间预警
区分“空间不足”和“I/O 瓶颈”两类问题:前者看 df -P 各挂载点使用率;后者看 iostat -dx 1 2 中的 %util、await 和 svctm。
- 对根分区、
/var、/home等关键路径单独检查,阈值按业务设定(如日志盘 85% 告警,系统盘 90% 告警) -
%util > 95%且await > 50ms持续 3 次以上,大概率存在慢盘或队列堆积 - 用
find /var/log -name "*.log" -mtime +7 -size +100M辅助识别异常大日志文件
网络与关键进程状态
网络关注连接数、错误包、丢包率;进程关注是否存在僵尸、高 CPU/内存占用、或关键服务(如 sshd、nginx)意外退出。
- 用
ss -s查总连接数,netstat -s | grep -i "retransmit\|drop"抓 TCP 重传和丢包线索 - 检查
ps aux --sort=-%cpu | head -5和ps aux --sort=-%mem | head -5,记录前 3 名异常进程 PID - 用
systemctl is-active xxx.service验证核心服务状态,失败时附加journalctl -u xxx.service --since "1 hour ago" -n 10日志片段
脚本最后统一汇总各模块结果,用颜色或符号标记 OK/WARN/CRIT,并写入日志或发邮件。不复杂但容易忽略细节——比如忘记加 #!/bin/bash 头、没处理不同发行版 proc 路径差异、或未用 set -e 防止中间命令失败后继续执行。











