Eine Referenz auf einer Seite für die Cron-Syntax der gängigen Dialekte: welche Felder es gibt, welche Werte sie akzeptieren und was jedes Sonderzeichen bewirkt. Probiere jedes Beispiel im Erklärer aus.
Felder und erlaubte Werte
Feld
Werte
Hinweise
Sekunde
0–59
Nur Quartz, Spring und Cron mit 6 Feldern
Minute
0–59
Erstes Feld in crontab und AWS
Stunde
0–23
24-Stunden-Format
Tag im Monat
1–31
L, W und LW in Quartz, Spring, AWS
Monat
1–12 oder JAN–DEC
Groß-/Kleinschreibung egal
Wochentag
0–7 oder SUN–SAT
Quartz und AWS: 1–7, 1 = Sonntag
Jahr
1970–2199
Optional in Quartz, Pflicht in AWS
Sonderzeichen
Zeichen
Bedeutung
Beispiel
*
Jeder Wert
* * * * * — jede Minute
,
Liste von Werten
0 9,17 * * * — 09:00 und 17:00
-
Bereich
0 9 * * 1-5 — werktags um 09:00
/
Schrittweite
*/15 * * * * — alle 15 Minuten
?
Kein bestimmter Wert (Tagesfelder)
0 0 12 ? * MON — Quartz
L
Letzter Tag / letzter Wochentag
0 0 0 L * ? — letzter Tag im Monat
W
Nächster Werktag
0 0 9 15W * ? — Werktag nächst dem 15.
#
N-ter Wochentag im Monat
0 0 9 ? * 2#1 — erster Montag
Makros
Makros
Standard-crontab
@yearly / @annually
0 0 1 1 *
@monthly
0 0 1 * *
@weekly
0 0 * * 0
@daily / @midnight
0 0 * * *
@hourly
0 * * * *
Lesereihenfolge
Lies einen Ausdruck von der kleinsten zur größten Einheit: 30 2 * * 1 ist Minute 30 der Stunde 2 an jedem Tag im Monat, in jedem Monat, wenn Montag ist – also montags um 02:30. Bei Quartz und Spring kommt das Sekundenfeld davor, bei AWS das Jahr dahinter.
Häufige Stolperfallen
*/7 im Minutenfeld heißt nicht „für immer alle sieben Minuten“: Es beginnt jede Stunde neu und feuert bei 0, 7, … 56 und dann wieder bei 0. Werden in crontab beide Tagesfelder eingeschränkt, genügt es, wenn eines passt. Und 0 im Wochentagsfeld ist in Quartz und AWS ungültig, weil die Woche dort bei 1 beginnt.
Häufige Fragen
In welcher Reihenfolge stehen die Cron-Felder?
Minute, Stunde, Tag im Monat, Monat, Wochentag. Quartz und Spring setzen die Sekunden davor, AWS hängt ein Jahr an.
Was bedeutet das Fragezeichen in Cron?
„Kein bestimmter Wert“. Quartz und AWS verlangen es in einem der beiden Tagesfelder; Standard-crontab akzeptiert es nicht.
Wie schreibe ich „alle 90 Minuten“?
Intervalle, die eine Stunde oder einen Tag nicht glatt teilen, lassen sich nicht in einer Zeile ausdrücken. Nutze zwei Einträge, etwa 0 0-21/3 * * * und 30 1-22/3 * * *.
Sind Monats- und Wochentagsnamen case-sensitiv?
Nein. JAN, Jan und jan sind in allen hier behandelten Dialekten gleichwertig.