![Wie starte ich crond automatisch neu, wenn es nicht ausgeführt wird?](https://rvso.com/image/1558015/Wie%20starte%20ich%20crond%20automatisch%20neu%2C%20wenn%20es%20nicht%20ausgef%C3%BChrt%20wird%3F.png)
Ich verwende Cron-Jobs, um andere Dienste zu überwachen und neu zu starten, wenn sie nicht ausgeführt werden. Aber wie kann ich Crond selbst überwachen/neu starten?
Antwort1
Sie benötigen entweder ein Init-System ( runit
, systemd
usw.), das den Prozess im Auge behalten kann und (mit entsprechender Konfiguration) den Daemon nach einem Fehler neu startet, oder Sie müssen einen anderen Daemon ausführen, der prüft, ob der Cron-Prozess ausgeführt wird und ihn andernfalls neu startet ( monit
, ein beliebiges Konfigurationsmanagement, das einen lokalen Agenten ausführt, wie z. B. CFEngine usw.).
Antwort2
Es empfiehlt sich, die Beobachter mit einem Watchdog-Skript mit Endlosschleife zu überwachen und dieses in /etc/rc.local oder einer ähnlichen Startdatei abzulegen.
#!/bin/bash
for service in crond httpd whatever
do
if [ `pgrep $service` = '' ]
then
service $service restart
# OR
# systemctl restart service
fi
sleep 3
done
Natürlich funktioniert dieses einfache Beispiel nur, wenn der Serviceprozess und das Servicestartskript denselben Namen haben. Sie können es jedoch an Ihre Anforderungen anpassen.