Guides 3 Min. Lesezeit

Verpasste Aufgaben vermeiden: So laufen Ihre Cron-Jobs zuverlässig

Backups, Importe und Aufräumarbeiten laufen per Cron – und scheitern lautlos. Typische Ursachen für verpasste Cron-Jobs, wie Sie sie beheben und wie Sie alarmiert werden, wenn ein Job nicht läuft.

Cron-Jobs erledigen die stille Arbeit hinter Websites und Servern: Backups, Updates, Importe, Rechnungen, Cache-Warm-ups und Aufräumarbeiten. Wenn sie funktionieren, merkt es niemand. Wenn sie stehen bleiben, merkt es auch niemand – bis ein Backup fehlt oder ein Rechnungslauf nie stattgefunden hat.

Warum Cron-Jobs wichtig sind

Cron plant Befehle so, dass sie automatisch zu festen Zeiten oder in festen Intervallen laufen. Das spart Zeit und beseitigt das Risiko, dass jemand eine Aufgabe vergisst. Es bedeutet aber auch, dass kritische Arbeit wie nächtliche Backups von einem Scheduler abhängt, der niemandem Bescheid gibt, wenn etwas schiefgeht.

Häufige Gründe für verpasste Cron-Jobs

Serverausfall. Ist der Server zur geplanten Zeit aus oder startet gerade neu, läuft der Job nicht.

Syntaxfehler. Ein falsches Feld im Zeitplan-Ausdruck kann dazu führen, dass der Job zur falschen Zeit oder nie läuft.

Fehlkonfiguration. Falscher Benutzer, falsches Arbeitsverzeichnis oder ein Job in einer Crontab, die nie geladen wird.

Unterschiedliche Umgebungen. Cron läuft mit einer minimalen Umgebung. Ein Befehl, der in Ihrer Shell funktioniert, kann unter Cron scheitern, weil PATH oder andere Variablen fehlen.

Überschneidungen und Timeouts. Ein Job, der länger läuft als sein Intervall, kann mit dem nächsten Lauf kollidieren. Eine maximale Laufzeit im Monitor des Jobs zeigt Ihnen, wenn ein Lauf zu lange dauert.

Fehler erkennen und beheben

Beginnen Sie mit den Logs. Das Systemlog (oft /var/log/syslog oder das Cron-Log Ihrer Distribution) zeigt, ob Cron den Job gestartet hat. Die eigene Ausgabe des Jobs zeigt, was danach passiert ist.

Typische Fehler und was sie bedeuten:

command not found: Verwenden Sie absolute Pfade oder setzen Sie PATH am Anfang der Crontab.

permission denied: Prüfen Sie die Dateirechte und unter welchem Benutzer der Job läuft.

syntax error: Prüfen Sie den Zeitplan-Ausdruck und die Anführungszeichen im Befehl.

Leiten Sie die Ausgabe in eine Logdatei um, damit Fehler eine Spur hinterlassen:

30 2 * * * /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1

Cron-Jobs überwachen

Logs helfen nur, wenn jemand sie liest. Monitoring macht aus einem lautlosen Fehler einen Alarm. Am zuverlässigsten ist ein Heartbeat: Der Job sendet nach Abschluss eine Anfrage an eine Monitoring-URL. Kommt die Anfrage nicht innerhalb der erwarteten Zeit an, erhalten Sie einen Alarm.

Mit den Cron-Monitoren von Uptimecheck pingt der Job eine eindeutige URL per GET oder POST an. Der Monitor übernimmt den Crontab-Zeitplan in Ihrer Zeitzone, akzeptiert Start- und End-Pings in einem Monitor, alarmiert, wenn ein Lauf seine maximale Laufzeit überschreitet, und kann den Exit-Code und die Ausgabe des Jobs erfassen. Fehlt ein Ping, geht der Alarm per E-Mail, Slack, Microsoft Teams, Discord, Google Chat, Mattermost, Telegram, PagerDuty, ntfy, Pushover, Webhook oder als Push-Benachrichtigung aufs Smartphone raus, in jedem Tarif. Die Schritt-für-Schritt-Anleitung finden Sie in Cron-Jobs überwachen.

Best Practices für die Zeitplanung

Planen Sie aufwendige Jobs außerhalb der Stoßzeiten.

Verteilen Sie Jobs, die dieselben Ressourcen nutzen, zeitlich, statt alle um Mitternacht zu starten.

Verwenden Sie eine Sperre (zum Beispiel flock), damit sich ein langsamer Lauf nicht mit dem nächsten überschneidet.

Überprüfen Sie die Zeitpläne, wenn sich Ihre Anwendung ändert.

Cron auf mehreren Servern betreiben

Gibt es denselben Job auf mehreren Servern, legen Sie fest, wo er laufen soll, und stellen Sie sicher, dass er nur einmal läuft. Eine zentrale Zeitplanung oder eine Sperre in einem gemeinsamen Speicher hilft dabei. Geben Sie jedem Job einen eigenen Heartbeat, damit Sie wissen, welcher Server seinen Lauf verpasst hat.

Cron-Jobs absichern

Cron-Jobs haben oft Zugriff auf Datenbanken, Backups und Zugangsdaten.

Beschränken Sie, wer Crontabs bearbeiten darf.

Halten Sie Geheimnisse aus der Crontab-Zeile selbst heraus und legen Sie sie in geschützten Dateien oder der Umgebungskonfiguration ab.

Überprüfen Sie Jobs regelmäßig und entfernen Sie die, die Sie nicht mehr brauchen.

Ressourcen effizient nutzen

Lassen Sie Jobs nur so oft laufen wie nötig und halten Sie die Befehle schlank. Ein Bericht, den niemand stündlich liest, kann auch täglich laufen.

Testen, bevor Sie sich darauf verlassen

Führen Sie einen neuen Job zunächst von Hand unter demselben Benutzer aus, prüfen Sie die Ausgabe und planen Sie ihn erst dann ein. Richten Sie gleichzeitig den Heartbeat ein, damit Sie schon ab der ersten Nacht wissen, ob er gelaufen ist.

Fazit

Cron-Jobs sind unverzichtbar und unsichtbar – genau deshalb brauchen sie Monitoring. Beheben Sie die häufigen Ursachen, protokollieren Sie die Ausgabe und versehen Sie jeden wichtigen Job mit einem Heartbeat.

Testen Sie Uptimecheck 14 Tage kostenlos, ganz ohne Kreditkarte.

Kostenloses Tool Cron-Ausdruck-Erklärer

Weiterlesen

Guides 8 Min. Lesezeit

Cron-Ausdrücke erklärt: Syntax, Beispiele und häufige Fehler

Ein Cron-Ausdruck besteht aus fünf Feldern, die festlegen, wann ein Job läuft. Syntax, Sonderzeichen und Kürzel wie @daily, fertige Beispiele sowie die Zeitzonen- und PATH-Fehler, an denen Jobs scheitern.

Lesen

Guides 6 Min. Lesezeit

Cron-Jobs mit Heartbeats überwachen

Cron-Jobs scheitern lautlos. Ein Heartbeat-Monitor alarmiert Sie, wenn sich ein geplanter Job nicht rechtzeitig meldet. Wie Heartbeats funktionieren, wie Sie einen in die Crontab einbauen und welche Einstellungen Sie wählen.

Lesen

Downtime ist von gestern.

Richten Sie Ihren ersten Monitor in weniger als einer Minute ein – oder sehen Sie sich zuerst die Live-Demo an.

14 Tage kostenlos testen · Danach gratis für 5 Monitore · Keine Kreditkarte