Zum Inhalt springen
CronExplain

Cron-Syntax-Spickzettel

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

FeldWerteHinweise
Sekunde0–59Nur Quartz, Spring und Cron mit 6 Feldern
Minute0–59Erstes Feld in crontab und AWS
Stunde0–2324-Stunden-Format
Tag im Monat1–31L, W und LW in Quartz, Spring, AWS
Monat1–12 oder JAN–DECGroß-/Kleinschreibung egal
Wochentag0–7 oder SUN–SATQuartz und AWS: 1–7, 1 = Sonntag
Jahr1970–2199Optional in Quartz, Pflicht in AWS

Sonderzeichen

ZeichenBedeutungBeispiel
*Jeder Wert* * * * * — jede Minute
,Liste von Werten0 9,17 * * * — 09:00 und 17:00
-Bereich0 9 * * 1-5 — werktags um 09:00
/Schrittweite*/15 * * * * — alle 15 Minuten
?Kein bestimmter Wert (Tagesfelder)0 0 12 ? * MON — Quartz
LLetzter Tag / letzter Wochentag0 0 0 L * ? — letzter Tag im Monat
WNächster Werktag0 0 9 15W * ? — Werktag nächst dem 15.
#N-ter Wochentag im Monat0 0 9 ? * 2#1 — erster Montag

Makros

MakrosStandard-crontab
@yearly / @annually0 0 1 1 *
@monthly0 0 1 * *
@weekly0 0 * * 0
@daily / @midnight0 0 * * *
@hourly0 * * * *

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.