我寫了一個bash腳本來重啓Apache,當它掛起併發送郵件給管理員。代碼如下所示。如果Apache進程的數量爲零,代碼將重新啓動Apache。問題是:Apache有時會掛起,進程仍然不是零,所以在這種情況下,腳本不會重新啓動Apache。 需要的是:如何修改代碼以重啓Apache,如果它掛起並且進程不爲零。bash腳本自動重啓Apache
#!/bin/bash
if [ `pgrep apache2 -c` -le "0" ]; then
/etc/init.d/apache2 stop
pkill -u www-data
/etc/init.d/apache2 start
echo "restarting....."
SUBJECT="Apache auto restart"
# Email To ?
EMAIL="[email protected]"
# Email text/message
EMAILMESSAGE="apache auto restart done"
# send an email using /bin/mail
/bin/mail -s "$SUBJECT" "$EMAIL" "$EMAILMESSAGE"
fi
修復疾病,沒有症狀。你應該問如何確定爲什麼Apache掛起(可能在ServerFault中),然後修復它......而不是如何在掛起時重新啓動它。 – Juliano
爲什麼在這裏重新發明輪子,在/etc/rc.d或類似的(取決於unix/linux安裝)中找到的啓動腳本有能力重啓,但是再次檢查錯誤日誌,必須重新啓動服務器,通常是/etc/rc.d/3/rc.httpd重啓或類似... – t0mm13b
嗨。朱利亞諾你是對的。我在尋找問題的根源,但我認爲這種腳本是「必須擁有」的腳本,因爲將來它有可能會掛起,這個腳本將暫時解決問題。 –