服务器巡检脚本集

2026 年 · Shell / Python

背景

手上有几台长期运行的机器,例行检查其实只有三件事:服务还在不在、证书还有几天到期、磁盘还剩多少。这三件事每次手工做一遍要十几分钟,而且容易漏。真正的风险不是做不完,而是做得不规律——三个月没看,才发现备份早就失败了。

设计原则

结构

inspect/
├── check-services.sh      # systemd 单元是否 active
├── check-cert-expiry.sh   # 证书 notAfter 距今天数
├── disk-usage-report.py   # 各挂载点使用率与增长趋势
└── run-all.sh             # 汇总执行,统一退出码

两个踩过的坑

坑一:只检查「文件在不在」。 一个 0 字节的页面照样会让 HTTP 返回 200。判断服务是否健康,要看实质指标(响应内容长度、数据库行数、连接数),不能只看状态码。

坑二:阈值写死。 磁盘 80% 对日志盘是警告,对数据盘可能已经危险。阈值必须跟挂载点绑定,而不是全局一个数。

现在的用法

run-all.sh 挂在定时任务上每天跑一次,输出写日志;异常时返回非 0。下载页提供了其中两个脚本的原样版本,可以直接改路径使用。