![crond が実行されていない場合に自動的に再起動するにはどうすればよいですか?](https://rvso.com/image/1558015/crond%20%E3%81%8C%E5%AE%9F%E8%A1%8C%E3%81%95%E3%82%8C%E3%81%A6%E3%81%84%E3%81%AA%E3%81%84%E5%A0%B4%E5%90%88%E3%81%AB%E8%87%AA%E5%8B%95%E7%9A%84%E3%81%AB%E5%86%8D%E8%B5%B7%E5%8B%95%E3%81%99%E3%82%8B%E3%81%AB%E3%81%AF%E3%81%A9%E3%81%86%E3%81%99%E3%82%8C%E3%81%B0%E3%82%88%E3%81%84%E3%81%A7%E3%81%99%E3%81%8B%3F.png)
cron ジョブを使用して、他のサービスを監視し、実行されていない場合は再起動します。しかし、crond 自体を監視/再起動するにはどうすればよいでしょうか?
答え1
プロセスを監視し、(適切な構成で)障害発生後にデーモンを再起動できるinit システム(runit
、など)が必要になるか、cron プロセスが実行中かどうかを確認し、実行されていない場合は再起動する他のデーモン( 、CFEngine などのローカル エージェントを実行する構成管理など)を実行する必要があります。systemd
monit
答え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
もちろん、この単純な例は、サービスプロセスとサービス起動スクリプトが同じ名前を共有している場合にのみ機能します。ただし、要求に合わせて修正できます。