Cron Ausdruck Generator
Visueller Generator und Parser für Cron-Zeitplan-Ausdrücke
Was ist ein Cron-Ausdruck?
Ein Cron-Ausdruck beschreibt wiederkehrende Ausführungszeiten für geplante Aufgaben. Je nach System besteht er aus fünf, sechs oder sieben Feldern für Minute, Stunde, Tag, Monat, Wochentag, optional Sekunden und optional Jahr. Zeichen wie Stern, Komma, Bindestrich, Schrägstrich, Fragezeichen oder spezielle Platzhalter erlauben Regeln wie “alle 5 Minuten”, “werktags um 9 Uhr” oder “am letzten Tag des Monats”. Das Werkzeug hilft, solche Ausdrücke zu lesen, zu prüfen und nächste Ausführungszeiten zu verstehen. Wichtig ist der Kontext: Linux-Cron, Quartz, Cloud-Scheduler und Frameworks unterscheiden sich bei Feldanzahl, Zeitzone und Sonderzeichen. Bei gemeinsamer Nutzung sollten Eingaben, Annahmen und gewünschtes Ergebnis vorher klar sein, damit die Ausgabe nicht falsch interpretiert wird.
Anleitung
Anleitung
- Generieren- oder Parse-Modus wählen
- Zeitfelder (Sekunde, Minute, Stunde, Tag, Monat, Wochentag) über Dropdowns festlegen
- Voreinstellungen anklicken, um gängige Ausdrücke schnell einzufügen
- Der Generieren-Modus zeigt den Ausdruck und die nächsten 5 Ausführungszeiten an
- Der Parse-Modus validiert vorhandene Ausdrücke und zeigt Ausführungszeiten an
Syntax-Symbole
- * — Alle möglichen Werte
- , — Mehrere Werte auflisten (z. B. 1,3,5)
- - — Bereich (z. B. 1-5)
- / — Schrittintervall (z. B. */5 bedeutet alle 5)
- ? — Kein spezifischer Wert (für Tag oder Wochentag)
- L — Letzter Tag des Monats oder der Woche
- W — Nächster Werktag
- # — N-ter Wochentag (z. B. 2#3 = 3. Dienstag)
Entwicklungshinweise
- Verwenden Sie das Ergebnis als schnelle Referenz und testen Sie es dann im tatsächlichen Code-, Build- oder API-Kontext.
- Berücksichtigen Sie Versionen, Dialekte, Umgebungsvariablen und Projektkonventionen.
Wichtige Hinweise
- Die Felder Tag und Wochentag können nicht beide Werte haben; eines muss ? verwenden
- Jedes Feld hat gültige Wertebereiche: Minute 0-59, Stunde 0-23
- Die Feldreihenfolge ist festgelegt: Sekunde Minute Stunde Tag Monat Wochentag Jahr
- Beim Wochentag wird die Groß- und Kleinschreibung ignoriert; MON und mon sind gleichwertig
Anwendungsfälle
Technisches Prinzip
Ein Cron-Ausdruck kodiert null oder mehr Zeitübereinstimmungs-Constraints in Feldern mit fester Reihenfolge. Der klassische Vixie/BSD-Cron (verwendet von Linux crond) nutzt 5 Felder: Minute (0-59), Stunde (0-23), Tag (1-31), Monat (1-12 oder JAN-DEC) und Wochentag (0-6 oder SUN-SAT, wobei Sonntag = 0 der Konvention entspricht). Der Quartz-Scheduler, bekannt durch Spring und die Egistix-Bibliothek, fügt ein führendes Sekunden-Feld für 6 Felder und ein optionales nachgestelltes Jahr-Feld für 7 Felder hinzu. Jedes Feld kann einen Literalwert, eine Liste (1,3,5), einen Bereich (1-5), einen Schritt (0/15 bedeutet alle 15 ab 0) oder den Platzhalter * annehmen, der alle Werte matched. Das Fragezeichen ? ist ein Quartz-spezifischer Sentinel, der "kein spezifischer Wert" bedeutet und GENAU in einem der Positionen Tag oder Wochentag erscheinen MUSS, wenn das andere einen Constraint hat. Die Berechnung der nächsten N Ausführungszeiten verwendet einen gierigen Vorwärtssuch-Algorithmus: Start vom Referenzzeitpunkt (meist Jetzt), Erhöhung des niedrigsten Feldes, das nicht zum Constraint passt, Zurücksetzen aller niedrigeren Felder auf ihr Minimum und Kaskadierung zu höheren Feldern beim Überlauf (z. B. Minuten über 59, Stunden über 23). Dies ist als Donovan/Spoonhour-Iterative bekannt und läuft in O(K x F), wobei K die Anzahl der Kandidaten (meist 5) und F die Feldanzahl ist. Wochentagnamen (MON, FRI usw.) werden in Kleinbuchstaben umgewandelt und gematcht, Monatsnamen-Abkürzungen werden ebenfalls akzeptiert. Das L-Sonderzeichen in Quartz ergibt das letzte Vorkommen eines Wochentags im Monat (z. B. 0 0 0 ? * 5L ist der letzte Freitag), berechnet durch Abzählen vom letzten Tag des Monats zum gesuchten Wochentag. Das W-Zeichen findet den nächsten Werktag (Mo-Fr) zu einem gegebenen Datum und springt bei Bedarf in den benachbarten Monat. Die Zeitzonenbehandlung ist die häufigste Fehlkonfiguration: Der Ausdruck selbst enthält keine Zeitzonen-Metadaten, daher feuert derselbe 0 0 9 * * ? auf Servern in America/New_York vs. Asia/Tokyo vs. UTC zu unterschiedlichen UTC-Offsets. Kurzformen wie @daily (0 0 0 * * ?), @hourly (0 0 * * * ?), @reboot (einmalig beim Daemon-Start, kein Zeitausdruck) und @weekly (0 0 0 ? * 1) werden vor dem Parsen in ihre äquivalente 6-Felder-Form expandiert. Eine häufige Stolperfalle ist die Tag + Wochentag-Konjunktion: Im klassischen Cron läuft der Job, wenn einer passt (ODER-Logik), während neuere Dialekte auf UND-Logik umschalten. Der Ausdruck 0 0 0 15 * 5 bedeutet in Vixie Cron "um Mitternacht am 15. UND an jedem Freitag", nicht "um Mitternacht am 15. ODER am Freitag", wie viele Anfänger annehmen. Das Y2038-Problem betrifft Cron nicht direkt (es verwendet time_t), aber jedes eingebettete Gerät mit 32-bit Unix crond wird den time_t signed 32-bit Integer am 2038-01-19T03:14:07Z überlaufen lassen.
- Klassisches 5-Felder-Format: Min Std Dom Mon Dow; Quartz fügt Sek (6-Felder) und optional Jahr (7-Felder) hinzu.
- ? muss eine der Positionen Dom/Dow belegen, wenn der andere einen Wert hat; * matched alle Werte in diesem Feld.
- Tag + Wochentag ist in Vixie Cron ODER, in neueren Schedulern UND - vor dem Deployment prüfen.
- L ergibt den letzten Wochentag des Monats: z. B. 0 0 0 ? * 5L = letzter Freitag, berechnet aus der Monatslänge.
- W findet den nächsten Werktag (Mo-Fr) zu einem gegebenen Datum; kann in den benachbarten Monat übergreifen.
- Cron-Ausdrücke enthalten keine Zeitzonen-Metadaten: Derselbe Ausdruck feuert je nach Scheduler zur Serverzeit, UTC oder einer benannten Zone.
- Y2038: 32-bit time_t überläuft am 2038-01-19 03:14:07 UTC; crond auf älteren eingebetteten Systemen ist betroffen.
- Kurzformen @hourly/@daily/@midnight/@weekly/@monthly/@yearly/@reboot werden in äquivalente 5- oder 6-Felder-Ausdrücke expandiert.
- Der Schritt-/-Operator zählt vom linken Wert: 2/3 bei Stunden feuert um 2, 5, 8, 11, 14, 17, 20, 23.
- Fünf-Iterationen gierige Vorwärtssuche in O(KxF) zur Berechnung der nächsten N Ausführungszeiten ab einem Referenzzeitpunkt.
Beispiele
Jeden Tag um Mitternacht (tägliches Backup)
Expression : 0 0 * * *
Means : Um 00:00 jeden Tag
Next runs : 2026-06-11 00:00, 2026-06-12 00:00, 2026-06-13 00:00
Use case : Datenbank-Backup, tägliche BerichterstellungAlle 15 Minuten (Health Check)
Expression : */15 * * * *
Means : Zur Minute 0, 15, 30, 45 jeder Stunde
Next runs : 14:00, 14:15, 14:30, 14:45, 15:00
Use case : API-Health-Check, Queue-Polling, Sync-JobsWerktags um 9:00 Uhr (Arbeitszeit-Benachrichtigung)
Expression : 0 9 * * 1-5
Means : 09:00 von Montag bis Freitag
Next runs : Mo 09:00, Di 09:00, Mi 09:00, Do 09:00, Fr 09:00
Use case : Stand-up-Erinnerung, Slack Daily DigestAm 1. jedes Monats um 03:30 Uhr (monatliche Abrechnung)
Expression : 30 3 1 * *
Means : 03:30 am 1. jedes Monats
Next runs : 1. Jul 03:30, 1. Aug 03:30, 1. Sep 03:30
Use case : Monatlicher Rechnungslauf, Log-Rotation, ArchivierungJeden Sonntag um Mitternacht (wöchentliche Bereinigung)
Expression : 0 0 * * 0
Means : 00:00 jeden Sonntag (0 = Sonntag in Linux Cron)
Next runs : So 00:00, So 00:00, So 00:00
Use case : Wöchentlicher Bericht per E-Mail, Cache-Bereinigung, RetrainingQuartz mit Sekunden – alle 30 Sekunden
Expression : */30 * * * * ?
Means : Alle 30 Sekunden (6-Feld Quartz-Syntax)
Next runs : 14:00:00, 14:00:30, 14:01:00, 14:01:30
Note : Wochentag ist ?, da Tag-des-Monats * ist. Verwenden Sie Quartz, nicht Linux Cron, für dieses Format.FAQ
Welche Cron-Formate werden unterstützt?
Standard-Cron mit 5 Feldern (minute hour dayOfMonth month dayOfWeek), 6-Feld-Variante mit Sekunden (von Quartz, Spring und vielen Cloud-Schedulern verwendet) sowie 7-Feld-Variante mit optionalem Jahr. Du kannst das Format wählen; jedes Feld wird beim Aufbau des Ausdrucks erläutert.
Warum sind dayOfMonth und dayOfWeek beides Felder?
Standard-Cron behandelt sie als ODER: 'erster Tag des Monats ODER jeden Montag' feuert bei einer der beiden Bedingungen. Für ein UND brauchst du meist eine nicht standardisierte ?-Syntax (Quartz) oder einen Workaround. Die Seite zeigt die nächsten Auslösezeiten, damit du deine Absicht visuell prüfen kannst.
Läuft der Zeitplan tatsächlich auf meinem System?
Nein – diese Seite generiert und validiert nur den Ausdruck; der Job läuft in deinem Scheduler (Linux cron, GitHub Actions, Kubernetes CronJob, AWS EventBridge, Quartz usw.). Verschiedene Scheduler haben leicht unterschiedliche Cron-Dialekte; wähle das passende Format für dein Ziel.
Welche Zeitzone verwendet der Zeitplan?
Standard-Unix-Cron nutzt die lokale Systemzeitzone. Cloud-Scheduler unterscheiden sich – AWS EventBridge nutzt standardmäßig UTC, GitHub Actions ebenfalls UTC, Kubernetes CronJob die Zeitzone des API-Servers. Lies die Doku deines Schedulers und denk daran, dass Zeitumstellungen Jobs zu unerwarteten Zeiten auslösen können.
Wie drücke ich 'alle 30 Minuten' aus?
*/30 * * * * (Minute = 0, 30; jede Stunde, jeden Tag, jeden Monat, jeden Wochentag). Für 'alle 15 Minuten nur während der Geschäftszeiten': */15 9-17 * * 1-5 (zusätzlich auf 9–17 Uhr Mo–Fr beschränkt). Die Seite zeigt zur Bestätigung die nächsten 5–10 Auslösezeiten.
Kann ich das gefahrlos für echte Produktionspläne nutzen?
Die Seite generiert nur den Ausdruck; das Ausführen des Jobs ist Sache deines Schedulers. Teste den Ausdruck zunächst mit einem Probelauf (die meisten Scheduler haben eine 'Manual run'-Option) und vermeide Jobs um Mitternacht (00:00), wo viele Systemjobs zusammenfallen und Lastspitzen erzeugen.
Wird etwas hochgeladen?
Nein. Der Ausdruck wird im Browser geparst und die nächsten Auslösezeiten werden mit einer JavaScript-Cron-Bibliothek lokal berechnet.