linux shell 脚本 是自动化 运维最直接轻量的 工具,用于磁盘监控预警、日志清理、配置同步和健康巡检,强调安全确认、自动备份与分步迭代。

Linux Shell 脚本是自动化运维最直接、最轻量的 工具。写好一个脚本,不是为了炫技,而是让重复的事少出错、省时间、可复现。
监控磁盘使用率并预警
磁盘满导致服务中断很常见,用一行命令查,不如写个脚本定时盯住它。
- 用 df -h | awk ‘$5+0 > 85 {print $1, $5}’ 筛出使用率超 85% 的分区
- 搭配 mail -s “ 磁盘告警 ” admin@example.com 发邮件(需配置本地 mailx 或 msmtp)
- 加个时间戳和日志记录:echo “$(date): $(df -h | grep ‘/$’ | awk ‘{print $5}’)” >> /var/log/disk-check.log
批量清理 N 天前的日志文件
日志不清理会悄悄吃光空间,但删错目录又很危险——脚本要带确认和白名单机制。
- 先限定范围:find /var/log -name “*.log” -type f -mtime +7 查 7 天前的 log 文件
- 加上 -delete 前务必先用 -print 预览,或重定向到临时文件人工核对
- 推荐加保护逻辑:[[“$(basename “$dir”)” == “nginx” ]] && find “$dir” …,只处理指定目录
自动同步配置并校验一致性
多台服务器配同一个服务(如 nginx),手动同步易漏,脚本可统一推 + 校验 + 回滚。
- 用 rsync -avz –delete /etc/nginx/ user@host:/etc/nginx/ 推送配置
- 推送后执行 ssh user@host ‘nginx -t’ 检查语法,失败则退出并报警
- 关键步骤前用 cp /etc/nginx/nginx.conf{,.bak.$(date +%s)} 自动备份
简易服务健康巡检脚本
不只是看进程在不在,还要看 端口 通不通、响应快不快、关键进程 线程 数是否异常。
- 检查 端口:nc -z localhost 80 && echo “OK” || echo “FAIL”
- 测响应时间:curl -o /dev/null -s -w “%{time_total}n” http://localhost/health | awk ‘$1 > 2 {exit 1}’
- 查关键进程线程数:ps -T -p $(pgrep nginx) | wc -l,超阈值就发通知
脚本越短越容易维护,越贴近真实任务越有用。别追求一步到位,从一个 df + mail 开始,跑通、加日志、再扩展,运维自动化就是这么长出来的。