PK Systems PK Systems
Entwickler-Tools

Cron-Ausdruck-Generator & -Erklärer

Cron-Ausdrücke visuell Feld für Feld bauen oder einen bestehenden einfügen für eine Klartext-Erklärung und die nächsten fünf Ausführungszeiten.

Cron-Ausdruck-Generator & -Erklärer

Cron-Ausdruck

* * * * *

Passe ein beliebiges Feld oben an, um den Ausdruck zu aktualisieren.

Was ist ein Cron-Ausdruck?

Ein Cron-Ausdruck ist ein Zeitplan mit fünf Feldern, der von Unix-artigen Task-Schedulern, CI-Systemen, Kubernetes CronJobs, AWS EventBridge, GitHub Actions und den meisten modernen Job-Runnern verwendet wird. Jedes Feld steuert eine Zeiteinheit – Minute, Stunde, Tag des Monats, Monat und Wochentag – und unterstützt vier Kurzschreibweisen: * (beliebig), eine kommagetrennte Liste (0,15,30,45), einen Bereich (1-5) und einen Schritt (*/10). Kombiniere sie und du kannst nahezu jeden wiederkehrenden Zeitplan beschreiben, ohne einen Kalender von Hand zu pflegen.

So nutzen Sie diesen Generator

Wähle eine Voreinstellung als sofortigen Ausgangspunkt oder baue den Ausdruck Feld für Feld auf. Jedes Feld hat vier Modi: Jede erzeugt *; Bestimmte Liste nimmt kommagetrennte Werte; Bereich nimmt ein Start-Ende-Paar; Schritt nimmt ein Intervall (*/N) mit einem optionalen Startversatz. Der Ausdruck und eine Beschreibung in einfacher Sprache aktualisieren sich live, sobald du etwas änderst. Für den umgekehrten Weg fügst du einen Cron-String unten in das Parser-Feld ein – das Tool dekodiert ihn in eine menschenlesbare Form und zeigt dir die nächsten fünf Ausführungszeitpunkte in deiner lokalen Zeitzone.

Feld-Referenz

Minute: 0–59. Stunde: 0–23. Tag des Monats: 1–31. Monat: 1–12 (Januar = 1). Wochentag: 0–6, wobei Sonntag = 0 im klassischen Unix-Cron – 7 wird in den meisten modernen Parsern ebenfalls als Sonntag akzeptiert. Wenn sowohl Tag des Monats als auch Wochentag auf Werte ungleich * gesetzt werden, löst klassisches Cron bei EINER der Bedingungen aus (logisches ODER), was viele Leute überrascht. Wähle eines von beiden für vorhersehbares Verhalten.

Häufig gestellte Fragen

Passt das zu Quartz / Spring Cron?
Nein – dieser Generator erzeugt klassisches 5-Feld-Unix-Cron. Quartz und Spring nutzen eine 6- oder 7-Feld-Variante, die ein vorangestelltes Sekundenfeld und ein optionales nachgestelltes Jahr ergänzt. Die Struktur ist ähnlich, daher kannst du in der Regel diese Ausgabe übernehmen und mit 0 präfixieren, um eine Quartz-kompatible Zeichenfolge zu erhalten. Spezielle Tokens wie L (last) und W (weekday) sind jedoch Quartz-exklusiv und tauchen hier nicht auf.
Wie berechnet der Erklärer die nächsten Ausführungen?
Wenn du auf Erklären klickst, geht das Tool den Ausdruck vorwärts durch und zeigt dir die nächsten fünf Auslösezeitpunkte, dargestellt in der lokalen Zeitzone deines Browsers. Die gesamte Berechnung erfolgt lokal – deine Cron-Strings verlassen die Seite nie.
Was ist mit Zeitzonen?
Sowohl der Generator als auch die Vorschau der nächsten Ausführungen behandeln den Ausdruck so, als würde er in der lokalen Zeitzone deines Browsers laufen. Produktive Cron-Scheduler unterscheiden sich: Linux crond verwendet die Systemzeitzone, AWS EventBridge ist standardmäßig auf UTC eingestellt, GitHub Actions nutzt UTC, Kubernetes verwendet die Cluster-Zeitzone. Bestätige immer die Zeitzone deines Runners, bevor du etwas deployst.
Wie drücke ich „den letzten Tag des Monats“ aus?
Klassisches Unix-Cron hat kein natives Token für „letzter Tag“, daher ist die naheliegendste portable Annäherung 59 23 28-31 * *, was ab dem 28. jeden Tag um 23:59 ausgelöst wird. Der Job selbst sollte date -d 'tomorrow' +%-d = 1 (oder das Äquivalent in deiner Sprache) prüfen und überspringen, falls es nicht tatsächlich Monatsende ist. Quartz-Cron unterstützt dafür L – aber Quartz-Ausdrücke laufen nicht auf einfachem Linux-Cron.
Kann ich einen Job alle 90 Minuten ausführen?
Nicht mit einem einzelnen Cron-Ausdruck – Cron-Schritte werden jede Stunde zurückgesetzt, daher funktioniert */90 nicht. Der naheliegendste Workaround sind zwei Ausdrücke: 0 0,3,6,9,12,15,18,21 * * * und 30 1,4,7,10,13,16,19,22 * * *, die zusammen alle 90 Minuten auslösen. Noch einfacher: alle 30 Minuten planen und im Skript mit exit 0 beenden, wenn es nicht der richtige Slot ist.
Warum löst mein Job bei der Sommerzeitumstellung zweimal aus?
Wenn die Uhr vorgestellt wird, werden Jobs in der fehlenden Stunde meist übersprungen. Wenn sie zurückgestellt wird, laufen Jobs in der wiederholten Stunde zweimal. Um das zu vermeiden, lasse Cron in UTC laufen (cron.timezone = 'UTC' oder TZ=UTC in der Crontab setzen) und konvertiere innerhalb des Jobs in die Lokalzeit – UTC kennt keine Sommerzeit.