回答
如果將其保存爲bash腳本,它將成爲您可以從cron調用的一行代碼。這將重啓Apache,如果它不在pgrep返回的進程列表中。
顯然這假設你有pgrep。調整您的命令以相應地重啓。
如果Apache運行但沒有響應,那是一個不同的問題。你必須要檢查一些端點響應(和正確響應)在指定的超時時間內,等
#!/bin/bash
RESTART="/etc/init.d/httpd restart"
PGREP="/usr/bin/pgrep"
HTTPD="httpd"
$PGREP ${HTTPD}
if [ $? -ne 0 ] # if apache not running
then
# restart apache
$RESTART
fi
'/ etc/init.d /'遲早會消失。 – guettli
service_ck.sh
#!/bin/bash
STATUS=$(/etc/init.d/service_name status)
# Most services will return something like "OK" if they are in fact "OK"
test "$STATUS" = "expected_value" || /etc/init.d/service_name restart
更改文件權限:
chmod +x service_ck.sh
更新您的crontab:
# min hour day month dow cmd
*/1 * * * * /path/to/service_ck.sh
'/ etc/init.d /'遲早會消失。 – guettli
這是真的,但是目前'systemd'將'init.d'映射到它的服務非常好,直到它完全替代'sysv','init.d''''''''' stop'腳本將會並且應該生存和發展。 –
@NarūnasK應該在有限的生命週期內生存並茁壯成長,直到不再支持折舊模式/路徑/方法。另外,有這樣的:'something.service不是本地服務,重定向到systemd-sysv-install'。從技術上講,雖然它的熟悉和落後compat,它在現代安裝混淆和碎片化 - 沒有symlinked以systemd方式,不顯示在正確的列表/地方等。順便說一句,你不需要這個腳本/ cron在所有如果你使用systemd內置的自動重啓能力:'Restart = always'應該可以在幾乎所有的發行版上從這裏開始使用。 – dhaupin
對於這種情況,您可以使用專用軟件monit
。它可以檢查你的守護進程,如果需要的話重啓它併發送警報。另一個不錯的選擇 - 它可以停止嘗試在N失敗後重新啓動服務(例如,如果服務無法啓動)。
- 1. 如何檢查是否安裝了服務並啓動服務(如果安裝了其他服務,如果安裝並啓動Windows的廚師的服務)
- 2. 重新啓動服務器後重新啓動WCF服務
- 3. 如何檢查服務器是否需要重新啓動
- 4. 如何在重新啓動後檢查服務?
- 5. Init.rc:服務中止並重新啓動
- 6. Ansible並重新啓動碼頭服務
- 7. Android服務死亡,然後自動重新啓動,並且工作正常
- 8. 啓動過程如果死了
- 9. 如何重新啓動服務器後重新啓動RoR服務
- 10. 重新啓動Unix服務
- 11. Android:Activity.onDestroy()重新啓動服務
- 12. Android重新啓動服務
- 13. Windows服務 - 重新啓動?
- 14. Windows服務重新啓動
- 15. 重新啓動服務
- 16. 從服務重新啓動Windows服務
- 17. 重新啓動後檢查本地服務器
- 18. 監控:健康檢查失敗時重新啓動服務器
- 19. 安卓服務在應用程序死機後重新啓動
- 20. Docker容器中的ntpd服務已死,無法重新啓動
- 21. 重新啓動或殺死Scrapyd服務器
- 22. Android服務在應用程序死亡時重新啓動
- 23. 重新啓動的服務,在debian postinst腳本中死亡。
- 24. Android服務被強行殺死後重新啓動的時間
- 25. 通過cronjob重新啓動系統
- 26. 使用cronjob定期重新啓動sidekiq
- 27. 模擬Android查殺並重新啓動服務
- 28. 加載主機服務器並重新啓動服務器
- 29. Android:重新啓動遠程服務並重新綁定它
- 30. 檢查遠程服務是否可用的腳本(如果不重新啓動服務和/或網絡)
不要。使用監視工具(如'monit'或'supervisord'或'runit'或'systemd'或任何其他少數幾個)。 –
@EtanReisner systemd具有看門狗支持(如果alive-ping沒有發送到systemd,則重新啓動服務),但是如果check-service-alive-script失敗,它不會重新啓動服務:: https://lists.freedesktop.org/ archives/systemd-devel/2016-May/036683.html「這真的超出了systemd的範圍,這是監測,我不確信在systemd中定製檢查功能支持是否合適,這應該在systemd 真的。「 – guettli
@guettli有趣。這似乎是一個非常小的頭髮要分裂給我,但。 –