In diesem Artikel
Was ist Crontab?
Crontab (Cron-Tabelle) ist ein zeitbasierter Auftragsplaner, der in Unix-artigen Betriebssystemen enthalten ist. Damit lassen sich Befehle oder Skripte so einrichten, dass sie automatisch in festgelegten Intervallen ausgeführt werden – von jeder Minute bis einmal pro Jahr. Der Cron-Daemon liest die Crontab-Dateien und führt die geplanten Befehle zu ihren vorgesehenen Zeitpunkten aus.
Jeder Benutzer eines Systems kann eine eigene Crontab-Datei besitzen, und zusätzlich gibt es eine systemweite Crontab. Die Crontab-Datei enthält eine Liste von Cron-Jobs, wobei jede Zeile über einen Zeitausdruck aus fünf Feldern gefolgt vom auszuführenden Befehl einen Zeitplan definiert.
Syntax von Cron-Ausdrücken
Ein Cron-Ausdruck besteht aus fünf durch Leerzeichen getrennten Feldern, die jeweils eine Zeiteinheit darstellen. Sonderzeichen ermöglichen die Definition komplexer Zeitpläne:
- Minute (0-59) – legt fest, in welcher Minute der Stunde der Job laufen soll
- Stunde (0-23) – legt fest, in welcher Stunde des Tages im 24-Stunden-Format
- Tag des Monats (1-31) – legt fest, an welchem Tag des Monats
- Monat (1-12) – legt fest, in welchem Monat des Jahres
- Wochentag (0-7, wobei sowohl 0 als auch 7 für Sonntag stehen) – legt fest, an welchem Wochentag
Zu den Sonderzeichen gehören: * (beliebiger Wert), / (Schrittwerte, z. B. */5 bedeutet alle 5 Einheiten), - (Bereiche, z. B. 1-5 bedeutet Montag bis Freitag) und Komma (Listen, z. B. 1,15 bedeutet den 1. und den 15.).
Häufige Cron-Muster
Hier sind die am häufigsten verwendeten Cron-Ausdrücke, die den Großteil aller Planungsanforderungen abdecken:
- */5 * * * * – alle 5 Minuten, häufig für Health-Checks und Monitoring-Skripte verwendet
- 0 * * * * – zu jeder vollen Stunde in Minute 0, geeignet für stündliche Datensynchronisationen oder die Erstellung von Berichten
- 0 0 * * * – täglich um Mitternacht, der Standardplan für Backups, Log-Rotation und Aufräumaufgaben
- 0 0 * * 1-5 – an jedem Wochentag um Mitternacht, nützlich für Verarbeitungen ausschließlich an Werktagen
- 0 0 1 * * – am ersten Tag jedes Monats um Mitternacht, typischerweise für Monatsberichte und Abrechnungen genutzt
- 0 9,17 * * 1-5 – um 9 Uhr und 17 Uhr an Werktagen, ideal für Benachrichtigungen zu Tagesbeginn und Tagesende
Kostenlos testen – keine Registrierung erforderlich
Cron-Ausdruck erstellen →Typische Anwendungsfälle
Cron-Jobs automatisieren praktisch jede wiederkehrende Systemaufgabe. Hier sind die häufigsten Einsatzgebiete:
- Log-Rotation und Aufräumen – alte Logdateien automatisch komprimieren, archivieren oder löschen, um Speicherplatzprobleme zu vermeiden
- Datenbank-Backups – regelmäßige mysqldump-, pg_dump- oder mongodump-Befehle einplanen, um konsistente Backup-Snapshots zu erstellen
- Berichterstellung – tägliche, wöchentliche oder monatliche Berichte aus Anwendungsdaten zusammenstellen und per E-Mail versenden
- Cache leeren – abgelaufene Cache-Einträge in regelmäßigen Abständen entfernen, um Arbeitsspeicher freizugeben und die Aktualität der Daten sicherzustellen
- Systemüberwachung – Health-Checks, Warnungen bei Speicherplatzmangel und Skripte zur Verfügbarkeitsprüfung in regelmäßigen Abständen ausführen
Tipps und Stolperfallen
Selbst erfahrene Entwickler stoßen auf typische Cron-Fallen. Behalten Sie diese Tipps im Hinterkopf, um Planungsprobleme zu vermeiden:
- Zeitzonen beachten – Cron verwendet standardmäßig die Systemzeitzone. Setzen Sie TZ in Ihrer Crontab oder verwenden Sie UTC, um Verwirrung bei der Umstellung auf Sommer- und Winterzeit zu vermeiden
- Überlappende Jobs – wenn ein Job länger dauert als das Intervall, können mehrere Instanzen gleichzeitig laufen. Verwenden Sie flock oder eine PID-Datei, um Überlappungen zu verhindern
- PATH-Probleme – Cron läuft mit einer minimalen Umgebung. Verwenden Sie stets absolute Pfade für Befehle und setzen Sie PATH explizit am Anfang Ihrer Crontab
- Ausgabe behandeln – Cron sendet stdout und stderr standardmäßig per E-Mail an den Benutzer. Leiten Sie die Ausgabe in eine Logdatei oder nach /dev/null um, damit der Mail-Spool nicht überläuft
- Debugging – prüfen Sie /var/log/syslog oder /var/log/cron auf Ausführungsprotokolle. Testen Sie Ihren Befehl manuell, bevor Sie ihn zur Crontab hinzufügen
Häufig gestellte Fragen
Kann Cron Jobs mit sekundengenauer Präzision planen?
Standard-Cron unterstützt keine Sekunden – die kleinste Einheit ist eine Minute. Wenn Sie sekundengenaue Präzision benötigen, können Sie einen Umweg nutzen, etwa ein Skript, das jede Minute läuft und intern mit sleep-Befehlen schleift, oder auf einen dedizierten Scheduler wie systemd-Timer wechseln, die Intervalle unter einer Minute unterstützen.
Was ist der Unterschied zwischen Cron und systemd-Timern?
Cron ist der klassische Unix-Scheduler, der Crontab-Dateien mit Zeitausdrücken aus fünf Feldern verwendet. Systemd-Timer sind eine neuere Alternative unter Linux, die Funktionen wie Präzision unter einer Minute, eine Kalender-Event-Syntax, persistente Timer, die verpasste Läufe nachholen, und eine bessere Logging-Integration bieten. Cron ist einfacher und portabler; systemd-Timer sind mächtiger, aber Linux-spezifisch.
Wie teste ich einen Cron-Job, bevor ich ihn einplane?
Führen Sie zunächst den genauen Befehl manuell in Ihrem Terminal aus, um zu prüfen, ob er funktioniert. Simulieren Sie dann die Cron-Umgebung, indem Sie env -i /bin/sh -c 'your-command' ausführen, um mit einer minimalen, cron-ähnlichen Umgebung zu testen. Planen Sie ihn abschließend so ein, dass er jede Minute läuft (* * * * *), prüfen Sie im Cron-Log, ob er korrekt ausgeführt wird, und stellen Sie ihn dann auf den gewünschten Zeitplan um.