Shell Script 检查并自动重启 Apache httpd


如果主机出现问题时, 可能负载过高或者服务当掉, 最理想的做法还是要找出原因, 很多时只要修改一些设定便可以。
早前遇到一位客户, 他安装在 VPS 的 Apache 会无故当掉, 间隔由几小时到一天不等, 检查后 Load Average 一点也不高, 当掉后只要重新启动 Apache 便没问题, 初部估计可能是 mpm_prefork 的设定问题。

由于修改后要观察一段时间, 这段时间 Apache 也可能当掉, 便写了这支 Shell Script, 会自动检查 Apache 是否能回应请求, 如果不能便自动重新启动, 并用电邮通知管理员, 以下分享一下, 首先建下以下 Shell Script, 以下会命名为 check-httpd.sh:

check-httpd.sh

将上面的程式码的 you@email.com 改为您的电邮, 然后设权限:

# chmod +x check-httpd.sh

最后将 check-httpd.sh 加入 crontab, 每 5 分钟执行一次:

# crontab -e

加入以下一行:

*/5 * * * * /path/to/check-named.sh >/dev/null 2>&1

这个 Shell Script 会检查 http://localhost 是否有回应, 如果没有回应, 会尝试重新启动 Apache。然后再检查一次, 不论是否成功启动, 都会向管理员发出电邮通知。

Leave a Reply