Was ist ein Cron-Ausdruck?
Ein Cron-Ausdruck ist eine kurze Zeichenkette, die einem Scheduler sagt, wann ein Job laufen soll. Fünf durch Leerzeichen getrennte Felder beschreiben Minute, Stunde, Tag des Monats, Monat und Wochentag. Der Ausdruck 30 2 * * 1 bedeutet halb drei Uhr morgens, jeden Montag.
Das Format stammt von Vixie cron, dem Scheduler, der bei fast jeder Linux-Distribution mitgeliefert wird. Dieselbe Syntax aus fünf Feldern taucht weit über die crontab-Datei hinaus auf: in Kubernetes CronJobs, GitHub-Actions-Workflows, AWS-EventBridge-Regeln, Jenkins-Pipelines, geplanten Aufgaben in Laravel und Django sowie in den Cron-Einstellungen der meisten Hosting-Control-Panels. Einmal gelernt, begleitet sie Sie überallhin.
Sie lässt sich auch leicht subtil falsch schreiben — deshalb zeigt Ihnen der Builder oben die nächsten Ausführungszeiten, statt einfach hinzunehmen, was Sie getippt haben.
Die fünf Felder der Reihe nach
| Position |
Feld |
Zulässige Werte |
| 1 | Minute | 0–59 |
| 2 | Stunde | 0–23 |
| 3 | Tag des Monats | 1–31 |
| 4 | Monat | 1–12 oder JAN–DEC |
| 5 | Wochentag | 0–7 oder SUN–SAT |
Im Wochentagsfeld bedeuten sowohl 0 als auch 7 Sonntag. Diese Redundanz ist Absicht und geht auf frühere Uneinigkeit zwischen Cron-Implementierungen darüber zurück, wo die Woche beginnt.
Sonderzeichen, die Sie in jedem Feld verwenden können
- Stern
* — jeder Wert. Im Stundenfeld bedeutet er jede Stunde.
- Komma
1,15,30 — eine Liste bestimmter Werte.
- Bindestrich
9-17 — ein einschließender Bereich, neun bis siebzehn.
- Schrägstrich
*/15 — ein Schritt. Jeder fünfzehnte Wert, also die Minuten 0, 15, 30 und 45.
Schritte lassen sich mit Bereichen kombinieren. 0-30/10 im Minutenfeld feuert bei 0, 10, 20 und 30 und pausiert dann bis zur nächsten Stunde.
So bauen Sie mit diesem Werkzeug einen Cron-Ausdruck
- Wählen Sie einen Ausgangspunkt aus der Liste gängiger Zeitpläne, oder tippen Sie einen Ausdruck direkt in das obere Feld.
- Passen Sie eine der fünf Auswahlen an. Sie bleiben mit dem Ausdruck darüber im Gleichschritt, das Bearbeiten der einen Seite aktualisiert also die andere.
- Drücken Sie Erklären & Vorschau. Sie erhalten den Zeitplan in verständlichem Klartext und die nächsten Ausführungszeiten, sodass Sie prüfen können, ob der Ausdruck das Gemeinte bedeutet, bevor er auch nur in die Nähe eines Servers kommt.
- Kopieren Sie den Ausdruck in Ihre crontab, Ihre Workflow-Datei oder Ihr Control Panel.
Alles läuft in Ihrem Browser. Kein Ausdruck wird irgendwohin gesendet, und das wiegt schwerer, als es klingt — Cron-Zeilen verraten oft interne Hostnamen, Skriptpfade und Deployment-Zeiten.
Gängige Cron-Zeitpläne
| Ausdruck |
Wann er läuft |
* * * * * | Jede Minute |
*/5 * * * * | Alle fünf Minuten |
0 * * * * | Stündlich, zur vollen Stunde |
0 */6 * * * | Alle sechs Stunden |
0 3 * * * | Täglich um 03:00 |
30 9 * * 1-5 | Werktags um 09:30 |
0 0 * * 0 | Wöchentlich, sonntags um Mitternacht |
0 0 1 * * | Monatlich, am Ersten |
0 0 1 1 * | Jährlich, am 1. Januar |
Die Falle mit Tag des Monats und Wochentag
Das ist der mit Abstand häufigste Cron-Fehler, und er erwischt auch erfahrene Entwickler.
Wenn Sie beide Felder einschränken, das für den Tag des Monats und das für den Wochentag, führt Cron den Job aus, sobald eines von beiden zutrifft — nicht erst, wenn beide zutreffen. 0 0 1 * 1 bedeutet also nicht „am Ersten des Monats, aber nur wenn es ein Montag ist“. Es bedeutet „am Ersten jedes Monats, und außerdem an jedem Montag“. Das sind grob fünf Ausführungen im Monat statt der einen, die Sie erwartet haben.
Ist eines der beiden Felder ein Stern, greift die Regel nicht und alles verhält sich wie erwartet. Der Builder oben bildet dieses Verhalten ab, statt es zu beschönigen — die Vorschau zeigt also die echten Ausführungszeiten, einschließlich der ungewollten.
Cron und Zeitumstellungen
Bei der Sommerzeit geraten Zeitpläne still aus dem Tritt. Werden die Uhren vorgestellt, existiert eine Stunde Ortszeit schlicht nicht, ein in diesem Fenster geplanter Job hat also keine gültige Minute zum Laufen. Werden die Uhren zurückgestellt, wiederholt sich die Stunde.
Verschiedene Scheduler lösen das unterschiedlich, und die sicherste Gewohnheit ist, Server auf UTC laufen zu lassen und alles Zeitkritische aus den frühen Morgenstunden herauszuhalten. Die Vorschau hier ermittelt die Ausführungszeiten in der Zeitzone Ihres eigenen Browsers, indem sie echte lokale Daten durchläuft — ein Zeitplan, der in eine Zeitumstellungslücke fällt, wird also übersprungen dargestellt und nicht eine Stunde zu spät.
Was diese Syntax nicht umfasst
Das Format mit fünf Feldern ist nicht der einzige Cron-Dialekt, und sie zu vermischen erzeugt Ausdrücke, die abgelehnt oder, schlimmer, still falsch gelesen werden.
- Sekunden. Manche Scheduler, allen voran Quartz und Spring, stellen ein Sekundenfeld voran, womit es sechs Felder werden. Die Standard-crontab hat kein Sekundenfeld — eine Minute ist die feinste Auflösung.
- Jahr. Quartz erlaubt ein optionales siebtes Feld für das Jahr. Vixie cron nicht.
- Die Erweiterungen
L, W und #. Quartz nutzt sie für „letzter Tag des Monats“, „nächstgelegener Werktag“ und „n-ter Wochentag“. Sie gehören nicht zu dieser Syntax.
- Kurzschreibweisen. Viele Cron-Implementierungen akzeptieren
@daily, @hourly und @reboot. Diese werden vom Cron-Daemon und nicht vom Ausdrucksparser verarbeitet, die Unterstützung schwankt also je nach Plattform.