Shell Script 檢查並自動重啟 Apache httpd

如果主機出現問題時, 可能負載過高或者服務當掉, 最理想的做法還是要找出原因, 很多時只要修改一些設定便可以。
早前遇到一位客戶, 他安裝在 VPS 的 Apache 會無故當掉, 間隔由幾小時到一天不等, 檢查後 Load Average 一點也不高, 當掉後只要重新啟動 Apache 便沒問題, 初部估計可能是 mpm_prefork 的設定問題。

由於修改後要觀察一段時間, 這段時間 Apache 也可能當掉, 便寫了這支 Shell Script, 會自動檢查 Apache 是否能回應請求, 如果不能便自動重新啟動, 並用電郵通知管理員, 以下分享一下, 首先建下以下 Shell Script, 以下會命名為 check-httpd.sh:


check-httpd.sh

將上面的程式碼的 [email protected] 改為您的電郵, 然後設權限:

# 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