ToolActToolAct

Cron Ausdruck Generator

Visueller Generator und Parser für Cron-Zeitplan-Ausdrücke

Cron 表达式
* * * ? * *
每秒钟执行
常用
字段设置
秒 (0-59)
分 (0-59)
时 (0-23)
日 (1-31)
月 (1-12)
周 (0-6)
最近 5 次执行时间
12026-07-04 00:00:00
22026-07-04 00:01:00
32026-07-04 00:02:00
42026-07-04 00:03:00
52026-07-04 00:04:00

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

  1. Generieren- oder Parse-Modus wählen
  2. Zeitfelder (Sekunde, Minute, Stunde, Tag, Monat, Wochentag) über Dropdowns festlegen
  3. Voreinstellungen anklicken, um gängige Ausdrücke schnell einzufügen
  4. Der Generieren-Modus zeigt den Ausdruck und die nächsten 5 Ausführungszeiten an
  5. 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

Quartz-Zeitpläne ohne Auswendiglernen jedes Feldes erstellenDie visuellen Feldsteuerungen nutzen, um einen 6-Felder-Ausdruck mit Sekunden, Minuten, Stunden, Tag, Monat und Wochentag zusammenzusetzen, einschließlich Bereiche, Schritte, letzter Tag, Werktag und n-ter-Wochentag-Muster. Der Ausdruck-Generator läuft rein clientseitig, sodass ein Zeitplan-Entwurf gegen eine Projektkonfigurationsdatei oder eine Scheduled-Job-JSON geprüft werden kann, bevor er committed und gepusht wird.
Einen bestehenden Cron-Ausdruck vor dem Deployment parsenEinen 5-Felder- oder 6-Felder-Ausdruck einfügen, um die Steuerungen zu befüllen und zu prüfen, ob der Zeitplan Sekunden, Tag, Wochentag oder ? wie erwartet nutzt. Das Parsing-Ergebnis zeigt eine verständliche Beschreibung und die nächsten Ausführungszeiten – der schnellste Weg, um einen Zeitplan zu erkennen, der um Mitternacht feuert, obwohl der Job für die Geschäftszeiten gedacht war.
Nächste Ausführungszeiten auf Plausibilität prüfenDie generierte Beschreibung und die nächsten fünf Ausführungszeiten prüfen, bevor der Ausdruck für Jobs, Reports, Backups, Erinnerungen oder Serveraufgaben verwendet wird, deren nachträgliche Änderung aufwändig ist. So werden Fehler bei Wochentag-Wahlen und unerwartetem Sekunden-Feld-Verhalten früh erkannt. Ein Zeitplan auf 0 0 0 29 2 ? für den 29. Februar überspringt in jedem Normaljahr stillschweigend, was die Vorschau sichtbar macht.
Unterschied zwischen Linux-Cron- und Quartz-Syntax beachtenEin 5-Felder-Ausdruck läuft auf Linux cron und Unix-Daemons; ein 6-Felder-Ausdruck mit Sekunden auf Quartz, Spring und den meisten Cloud-Schedulern. Vor dem Speichern das Zielsystem bestätigen, da dieselben Ziffern unterschiedliche Zeitpläne bedeuten. Quartz akzeptiert auch Kurzformen wie @hourly, @daily, @midnight, @weekly, @monthly, @yearly und @reboot, die auf feste 5- oder 6-Felder-Ausdrücke abgebildet werden und in Springs @Scheduled-Annotation praktisch sind, von klassischem crond aber abgelehnt werden.
Zeitzonenbehandlung vor dem Job-Deployment prüfenPrüfen, ob der Scheduler den Cron-Ausdruck in Serverzeit, UTC oder einer benannten Zone wie America/New_York interpretiert, da ein in der Hauptzeit formulierter Job auf einem global verteilten Worker Stunden zu spät feuern kann.

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 Berichterstellung

Alle 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-Jobs

Werktags 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 Digest

Am 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, Archivierung

Jeden 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, Retraining

Quartz 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.