Linux 运维日常巡检脚本示例

1次阅读

linux运维巡检脚本聚焦cpu、内存、磁盘、网络、服务、日志六类风险点,用top/vmstat/free/df等命令监控基础资源,以systemctl+curl/nc验证服务可用性,journalctl/dmesg/grep扫描近期错误,定时执行并输出带上下文的结构化摘要。

Linux 运维日常巡检脚本示例

Linux 运维日常巡检脚本的核心是自动化检查关键系统状态,及时发现异常,避免小问题演变成故障。不追求大而全,重点覆盖 CPU、内存、磁盘、网络、服务和日志这六类高频风险点。

基础资源监控(CPU / 内存 / 磁盘)

top -b -n1vmstat 1 2 获取瞬时负载;内存重点关注 free -h 中的 available 值,而非 free;磁盘用 df -hP 检查使用率,建议对 //var/home 单独判断,超过 85% 触发告警。

  • 避免只看 %CPU 平均值,加一句 uptime 查 load average 是否持续高于 CPU 核数
  • 内存不光看总量,cat /proc/meminfo | grep -E "MemAvailable|SwapFree" 更反映真实可用空间
  • 磁盘检查后建议附加 ls -lt /var/log/ | head -5,快速确认日志是否在疯长

核心服务与端口连通性

巡检不是“服务是否在运行”,而是“服务是否可响应”。用 systemctl is-active 判断状态,再用 curl -Inc -zv 验证监听端口的实际连通性。

  • Web 服务:检查 curl -I http://127.0.0.1 --connect-timeout 3 -s | head -1 返回 200/30x
  • 数据库:对 mysql 执行 mysqladmin ping -u root -p'xxx' --silent &>/dev/null
  • ssh 和 NTP 等基础服务,用 ss -tlnp | grep :22 确认监听且无异常绑定

异常日志与错误模式扫描

不翻完整日志,聚焦最近 10 分钟内含关键词的条目:ERRErrorFailedsegmentation faultOOM killed

  • 常用命令:journalctl --since "10 minutes ago" | grep -iE "fail|err|kill|oom"
  • 补充检查 /var/log/messages/var/log/secure 中高频重复 IP 的登录失败记录
  • dmesg -T | tail -30 做简单过滤,捕获硬件或内核级异常(如磁盘 I/O timeout)

定时执行与结果输出

脚本结尾统一输出简明摘要,保存到日志并支持邮件或钉钉推送。不要只写“OK”,要带上下文:

  • 示例输出:[OK] Load: 0.42, Mem: 62% (3.1G/5.0G), Disk/: 73%, SSH/HTTP/NTP: OK, Errors: 0
  • date >> /var/log/check_daily.log 开头,每次执行留痕,方便回溯
  • 配合 crontab 每天 6:30 执行:30 6 * * * /opt/scripts/check.sh >> /var/log/check_daily.log 2>&1

一个实用的巡检脚本不需要上百行,50 行以内能覆盖 80% 日常风险。关键是每次执行都给出可读、可比、可追查的结果,而不是“跑完了就完事”。

text=ZqhQzanResources