服务器一键巡检的核心是将cpu、内存、磁盘、服务状态、日志异常等重复检查项封装为shell脚本,通过单条命令批量采集判断并清晰输出结果,重点聚焦影响业务稳定性的基础指标,采用模块化函数设计、阈值参数化、日志记录、告警通知及彩色输出等实用技巧,并支持定时执行与版本管理。

服务器一键巡检的核心是把重复性检查项(CPU、内存、磁盘、服务状态、日志异常等)封装成可执行的 Shell 脚本,通过单条命令触发批量采集和判断,再以清晰方式输出结果。
明确巡检范围和关键指标
不是所有信息都要查,重点聚焦影响业务稳定性的基础项:
- CPU 使用率(
top -bn1 | grep "Cpu(s)"或mpstat) - 内存剩余与缓存占用(
free -h,关注available值) - 根分区及关键挂载点使用率(
df -h | awk '$5 > 85 {print $1,$5}') - 核心服务进程是否存在(
systemctl is-active nginx mysql redis或pgrep -f "java|nginx") - 最近 5 分钟内关键日志错误(
journalctl --since "5 minutes ago" | grep -i "failed\|error\|oom\|segmentation")
编写结构清晰的巡检脚本
用函数模块化各检查项,统一返回状态和提示,避免逻辑混杂:
#!/bin/bash
check_cpu() {
local usage=$(top -bn1 | grep "Cpu(s)" | awk '{print $2}' | cut -d'%' -f1)
if (( $(echo "$usage > 90" | bc -l) )); then
echo "⚠️ CPU 使用率 $usage%(过高)"
else
echo "✅ CPU 使用率 $usage%"
fi
}
<p>check_disk() {
df -h | awk '$5 > 85 {print "⚠️ " $1 " 使用率 " $5 "(超阈值)"} $5 </p><h1>后续类似定义 check_memory、check_services 等</h1><p></p>
主流程按顺序调用函数,并汇总异常项数量,便于快速识别问题。
增强实用性的小技巧
让脚本更贴近运维真实场景:
- 支持传参指定阈值,如
./check.sh --disk-threshold 90 - 自动记录每次执行时间戳和结果到日志文件(
./check.sh >> /var/log/server-check.log 2>&1) - 异常时发送邮件或企业微信通知(调用
curl接口或mail命令) - 加颜色输出(用
\033[32m绿色、\033[33m黄色提升可读性)
部署与日常使用
脚本写好后,只需几步即可投入日常:
- 赋予执行权限:
chmod +x check.sh - 放入常用路径,如
/usr/local/bin/check-server,方便全局调用 - 加入定时任务(
crontab -e):每小时执行一次并保存结果0 * * * * /usr/local/bin/check-server >> /var/log/check-hourly.log 2>&1 - 多人协作时,把脚本放在 Git 仓库,统一版本管理











