Cron-Syntax erklärt, Feld für Feld
Ein praktischer Leitfaden zum Lesen und Schreiben von Cron-Ausdrücken — die fünf Felder, die Operatoren, gängige Rezepte und die Zeitzonen-Falle.
Cron-Ausdrücke sehen kryptisch aus, folgen aber einer kleinen, erlernbaren
Grammatik. Sobald Sie die fünf Felder und vier Operatoren lesen können, ist
30 4 1,15 * * kein Rätsel mehr. Dies ist ein praktischer Leitfaden — und es gibt
ein kostenloses Erklär-Tool, falls Sie
einen Ausdruck lieber einfügen und sofort sehen möchten, was er tut.
Die fünf Felder
Ein Standard-Cron-Ausdruck besteht aus fünf durch Leerzeichen getrennten Feldern:
┌───────────── Minute (0 - 59)
│ ┌─────────── Stunde (0 - 23)
│ │ ┌───────── Tag im Monat (1 - 31)
│ │ │ ┌─────── Monat (1 - 12)
│ │ │ │ ┌───── Wochentag (0 - 6, Sonntag = 0)
│ │ │ │ │
* * * * *
Von links nach rechts: Minute, Stunde, Tag des Monats, Monat, Wochentag.
Die vier Operatoren
*— jeder Wert.* * * * *bedeutet jede Minute.,— eine Liste.1,15im Tag-des-Monats-Feld bedeutet den 1. und den 15.-— ein Bereich.9-17im Stundenfeld bedeutet 09:00 bis 17:00./— ein Schritt.*/15im Minutenfeld bedeutet alle 15 Minuten.
Sie kombinieren sie frei: 0 9-17 * * 1-5 heißt „zur vollen Stunde, 9–17 Uhr,
werktags“.
Rezepte, die Sie wirklich nutzen werden
| Ausdruck | Bedeutung |
|---|---|
*/15 * * * * | Alle 15 Minuten |
0 9 * * 1-5 | Werktags um 09:00 |
30 4 1,15 * * | 04:30 am 1. und 15. |
0 */4 * * * | Alle 4 Stunden |
0 2 * * * | Täglich um 02:00 |
0 0 * * 0 | Sonntags um Mitternacht |
Die Tag-des-Monats-/Wochentag-Falle
Wenn Sie beide Felder (Tag des Monats und Wochentag) auf Nicht-*-Werte setzen,
behandeln das die meisten Cron-Implementierungen als ODER, nicht als UND.
0 0 13 * 5 bedeutet nicht „Freitag, der 13.“ — es bedeutet „der 13. jedes
Monats und jeden Freitag“. Lassen Sie eines der beiden auf *, sofern Sie nicht
wirklich die Vereinigung meinen.
Die Zeitzonen-Falle
Die größte Quelle von Cron-Überraschungen ist nicht die Syntax — es ist die Zeit. Server-Cron läuft meist in UTC, aber Sie denken in lokaler Zeit, und zweimal im Jahr verschiebt die Sommerzeit die Uhr. Ein für „09:00“ in einer UTC-Crontab gesetzter Job verschiebt sich im Frühjahr und Herbst um eine Stunde gegenüber Ihrem Büro.
Die Lösung ist, in einer echten Zeitzone zu planen und die Sommerzeit dem Planer
zu überlassen. SteadyCron gibt jedem Job seine eigene IANA-Zeitzone (wie
Europe/Berlin) und hält „09:00 jeden Werktag“ das ganze Jahr über um 09:00 Uhr
Ortszeit.
Probieren Sie es aus
Fügen Sie einen beliebigen Ausdruck in den Cron-Ausdruck-Erklärer ein, um ihn in verständlicher Sprache zu sehen und die nächsten Läufe in Ihrer Zeitzone vorzuschauen — und planen Sie ihn dann auf SteadyCron mit Wiederholungen und Alerts.