Wie starte ich crond automatisch neu, wenn es nicht ausgeführt wird?

Wie starte ich crond automatisch neu, wenn es nicht ausgeführt wird?

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, systemdusw.), 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.

verwandte Informationen