Linux服务监控与自动重启
Shell编写的服务监控脚本,定期检查指定服务的运行状态,发现服务停止自动重启,记录日志,重启失败发送邮件告警,支持配置多个服务,配合crontab定时运行,是服务器运维的必备脚本。
详细内容
#!/bin/bash
SERVICES=("nginx" "mysql" "docker")
LOGFILE="/var/log/service_monitor.log"
EMAIL="admin@example.com"
for svc in "${SERVICES[@]}"; do
if ! systemctl is-active --quiet $svc; then
echo "$(date): $svc 停止,尝试重启" >> $LOGFILE
systemctl restart $svc
sleep 3
if systemctl is-active --quiet $svc; then
echo "$(date): $svc 重启成功" >> $LOGFILE
else
echo "$(date): $svc 重启失败,请检查" >> $LOGFILE
echo "$svc 重启失败" | mail -s "服务告警" $EMAIL
fi
fi
done
适配环境
依赖环境:Linux系统,Bash,systemd服务
使用说明
1.将脚本保存为monitor.sh
2.chmod +x monitor.sh
3.修改服务名称和邮箱配置
4.crontab -e 添加 */5 * * * * /path/monitor.sh
5.每5分钟自动检查
配合crontab定时运行
可以配置多个服务监控
邮件告警需要配置mail命令
日志文件记录所有操作
建议先手动测试确认邮件能收到
2.chmod +x monitor.sh
3.修改服务名称和邮箱配置
4.crontab -e 添加 */5 * * * * /path/monitor.sh
5.每5分钟自动检查
配合crontab定时运行
可以配置多个服务监控
邮件告警需要配置mail命令
日志文件记录所有操作
建议先手动测试确认邮件能收到
常见问题
问:支持哪些服务?
答:支持systemd管理的所有服务,如nginx/mysql/docker等
问:邮件发不出去?
答:需要安装mailutils并配置SMTP,或改用企业微信/钉钉webhook