Einen Linux-Cronjob überwachen
Das klassische Problem mit cron : wenn ein Job fehlschlägt oder nicht mehr startet, wird niemand benachrichtigt. Die lokale Mail von cron landet in/var/mail das niemand liest. Das Ergebnis: ein Backup, das seit 3 Wochen stillschweigend kaputt ist und genau an dem Tag entdeckt wird, an dem man es braucht.
Warum Crons stillschweigend fehlschlagen
- Der Server wurde neu gestartet und crond ist nicht wieder hochgekommen.
- Der PATH des Crons unterscheidet sich von der interaktiven Shell → Befehl nicht gefunden.
- Die Platte ist voll, oder ein Lock (flock) blockiert die Ausführung.
- Das Skript stürzt ab, gibt aber Exit-Code 0 zurück, also „alles gut“.
Suchst du die crontab-Zeile selbst — curl-Flags, %-Escaping, Überlappungsschutz? Zum Guide: Cron alle 5 Minuten.
Die Lösung: ein Dead Man's Switch
Statt den Server zu überwachen, bittest du den Cron, zu melden, dass er gelaufen ist. Meldet er sich nicht zur erwarteten Zeit, ist der Cron selbst das Problem. Erstelle einen Check bei Cron-Ping, hol dir deine URL und füge ein curl :
# vorher: man weiß nie, ob es läuft
0 2 * * * /opt/backup.sh
# nachher: Ping nur wenn das Skript erfolgreich ist
0 2 * * * /opt/backup.sh && curl -fsS https://cron-ping.com/p/<token>Erfolg und Fehler unterscheiden
0 2 * * * /opt/backup.sh && curl -fsS https://cron-ping.com/p/<token> || curl -fsS https://cron-ping.com/p/<token>/failWenn backup.sh fehlschlägt, rufen wir /fail auf, und du erhältst sofort einen Alarm, ohne die Karenzzeit abzuwarten.
Prüfen, ob cron wirklich läuft
systemctl status cron # Debian/Ubuntu
systemctl status crond # RHEL/CentOS
grep CRON /var/log/syslogÜberwache diesen Cron in 2 Minuten mit Cron-Ping
Kostenlos starten