Blog

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.

SteadyCron cronPlanungLeitfaden

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,15 im Tag-des-Monats-Feld bedeutet den 1. und den 15.
  • - — ein Bereich. 9-17 im Stundenfeld bedeutet 09:00 bis 17:00.
  • / — ein Schritt. */15 im 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

AusdruckBedeutung
*/15 * * * *Alle 15 Minuten
0 9 * * 1-5Werktags 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 * * 0Sonntags 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.