
我使用 cron 作業來監視並重新啟動其他未執行的服務。但如何監控/重啟 crond 本身呢?
答案1
您將需要一個 init 系統(runit
、systemd
等)來監視進程並(透過適當的配置)在失敗後重新啟動守護進程,或者運行一些其他守護進程來檢查 cron 進程是否正在運行,如果沒有則重新啟動它(monit
任何運行本地代理的組態管理,例如CFEngine 等)。
答案2
最好用無限循環的看門狗腳本來觀察觀察者,並將其放入 /etc/rc.local 或類似的啟動檔案中。
#!/bin/bash
for service in crond httpd whatever
do
if [ `pgrep $service` = '' ]
then
service $service restart
# OR
# systemctl restart service
fi
sleep 3
done
當然,這個簡單的範例僅在服務進程和服務啟動腳本共享相同名稱的情況下才有效。但你可以修復它以滿足你的需求