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命令
日志文件记录所有操作
建议先手动测试确认邮件能收到

常见问题

问:支持哪些服务?
答:支持systemd管理的所有服务,如nginx/mysql/docker等

问:邮件发不出去?
答:需要安装mailutils并配置SMTP,或改用企业微信/钉钉webhook

ShellLinux监控自动重启运维告警免费

更多其他