Ein Cron-Ausdruck ist die kompakteste Art, einem Server mitzuteilen, wann eine Aufgabe automatisch laufen soll. Ob nächtliches Backup, stündlicher Cache-Reset oder ein wöchentlicher Report – hinter fast jeder zeitgesteuerten Aufgabe auf Linux- und Unix-Systemen steckt eine Zeile mit fünf kryptisch wirkenden Feldern. Wer die Syntax einmal verstanden hat, liest jeden Ausdruck in Sekunden. Dieser Ratgeber erklärt den Aufbau Schritt für Schritt.
Was ist Cron überhaupt?
Cron ist ein klassischer Dienst (Daemon) auf unixoiden Systemen, der im Hintergrund läuft und in einer Tabelle – der Crontab – nachschaut, ob in der aktuellen Minute ein Job ausgeführt werden muss. Jede Zeile dieser Tabelle besteht aus einem Zeitplan und dem Befehl, der zu diesem Zeitpunkt gestartet wird. Der Zeitplan selbst ist der Cron-Ausdruck.
Die fünf Felder eines Cron-Ausdrucks
Ein Standard-Cron-Ausdruck besteht aus fünf durch Leerzeichen getrennten Feldern. Die Reihenfolge ist immer gleich:
- Minute (0–59)
- Stunde (0–23, im 24-Stunden-Format)
- Tag des Monats (1–31)
- Monat (1–12)
- Wochentag (0–7, wobei 0 und 7 beide Sonntag bedeuten)
Der Ausdruck 30 2 * * 1 bedeutet zum Beispiel: Minute 30, Stunde 2, jeder Tag des Monats, jeder Monat, aber nur am Wochentag 1 (Montag). Übersetzt: „jeden Montag um 02:30 Uhr“. Genau diese Übersetzung in Klartext nimmt dir der Cron-Ausdruck-Erklärer ab – du gibst die fünf Felder ein und bekommst sofort eine verständliche Beschreibung jedes einzelnen Feldes zurück.
Die Sonderzeichen
Die eigentliche Ausdruckskraft von Cron liegt in vier Sonderzeichen, die in jedem Feld funktionieren:
- Stern (*) steht für „jeder mögliche Wert“. Im Minutenfeld bedeutet
*also jede Minute. - Schrägstrich (/) definiert Schrittweiten.
*/15im Minutenfeld heißt „alle 15 Minuten“ (0, 15, 30, 45). - Komma (,) listet einzelne Werte auf.
1,15im Tagesfeld bedeutet „am 1. und am 15. des Monats“. - Bindestrich (-) definiert Bereiche.
1-5im Wochentagsfeld steht für Montag bis Freitag.
Diese Zeichen lassen sich kombinieren: 0 9-17 * * 1-5 bedeutet „zur vollen Stunde von 9 bis 17 Uhr, montags bis freitags“ – ein typischer Zeitplan für einen Geschäftszeiten-Job.
Häufige Zeitpläne im Überblick
* * * * *– jede Minute (oft zum Testen)0 * * * *– jede volle Stunde0 0 * * *– täglich um Mitternacht0 3 * * 0– jeden Sonntag um 03:00 Uhr*/5 * * * *– alle fünf Minuten0 0 1 * *– am ersten Tag jedes Monats um Mitternacht
Typische Fehler und Stolperfallen
Der häufigste Anfängerfehler betrifft das Verhältnis von Tag des Monats und Wochentag. Wenn beide Felder gesetzt sind (also nicht auf * stehen), verknüpft Cron sie mit einem logischen ODER, nicht UND. 0 0 13 * 5 läuft also an jedem 13. und an jedem Freitag – nicht nur an Freitag, dem 13.
Ein weiterer Klassiker ist die Zeitzone: Cron orientiert sich an der Systemzeit des Servers. Steht der Server auf UTC, läuft dein „mitternächtlicher“ Job womöglich um 1 oder 2 Uhr Ortszeit. Prüfe daher vor dem Produktivbetrieb immer die Zeitzone des Hosts. Zur Umrechnung von Intervallen in echte Laufzahlen pro Tag hilft dir der Cron Intervall Rechner.
Wann lohnt sich Cron – und wann nicht?
Cron ist ideal für wiederkehrende, zeitbasierte Aufgaben mit fester Frequenz: Logrotation, Datenbank-Dumps, das Versenden von Erinnerungs-Mails oder das Aufräumen temporärer Dateien. Für ereignisgesteuerte Abläufe (etwa „sobald eine Datei hochgeladen wird“) ist Cron das falsche Werkzeug – hier sind Queues oder Event-Trigger besser geeignet. Auch sehr kurze Intervalle unter einer Minute kann klassisches Cron nicht abbilden; dafür braucht es einen dauerhaft laufenden Prozess mit eigenem Timer.
Wer regelmäßig mit Servern, Deployments oder Automatisierung arbeitet, sollte die Cron-Syntax im Kopf haben. Für alles andere gibt es den Cron-Ausdruck-Erklärer, der jeden Ausdruck verständlich aufschlüsselt. Weitere praktische Helfer für den Entwickleralltag findest du in unserer Webtools-Sammlung.
Häufige Fragen
Was bedeutet der fünfte Stern in einem Cron-Ausdruck?
Der fünfte Stern steht im Wochentagsfeld und bedeutet „an jedem Wochentag“. Erst wenn du hier eine Zahl von 0 bis 7 einträgst, beschränkst du die Ausführung auf bestimmte Wochentage.
Wie schreibe ich „alle 30 Minuten“ als Cron-Ausdruck?
Verwende */30 * * * *. Der Schrägstrich im Minutenfeld definiert die Schrittweite von 30, also Minute 0 und Minute 30 jeder Stunde.
Gibt es ein sechstes Feld für Sekunden?
Standard-Cron auf Linux kennt nur fünf Felder und damit keine Sekunden-Auflösung. Manche Cron-Implementierungen und viele Scheduler-Bibliotheken (etwa in Java oder Node.js) ergänzen ein optionales Sekundenfeld als erstes Feld – das ist aber kein POSIX-Standard.