Skip to main content

Cron-Ausdruck-Parser

Cron-Ausdrücke in menschenlesbare Zeitpläne mit nächsten Ausführungszeiten parsen.

Geprüft von · Zuletzt geprüft

minute|hour|day of month|month|day of week
Common Presets
Cron Syntax Reference
SymbolMeaningExample
*Any value* * * * *
,List of values1,15 * * * *
-Range of values* 9-17 * * *
/Step values*/15 * * * *

So verwendest du den Cron-Ausdruck-Parser

  1. Tippe oder füge einen Cron-Ausdruck ein in das Eingabefeld - zum Beispiel */15 9-17 * * 1-5 für alle 15 Minuten zwischen 9 und 17 Uhr an Wochentagen.
  2. Klicke Parse oder drücke Enter. Das Werkzeug validiert den Ausdruck, markiert ungültige Felder und erzeugt eine klartextliche Beschreibung ("Bei jeder 15. Minute jeder Stunde von 9 bis 17, Montag bis Freitag").
  3. Untersuche die Feldaufschlüsselungs-Tabelle. Jedes der fünf Felder (Minute, Stunde, Tag-des-Monats, Monat, Wochentag) ist mit dem annotiert, was sein aktueller Wert bedeutet.
  4. Scrolle die nächste-Ausführungs-Liste. Das Werkzeug berechnet die nächsten fünf Male, zu denen der Ausdruck gegen deine lokale Uhr auslösen würde, und zeigt sie als vollständige Zeitstempel an.
  5. Probiere die Voreinstellungen, wenn du dir unsicher bist - "stündlich", "täglich um Mitternacht", "Wochentage um 9" und andere laden als Ausgangspunkte, die du anpassen kannst.

Was dieses Werkzeug tut und wie es funktioniert

Cron-Ausdrücke kodieren wiederkehrende Zeitpläne als kompakte Menge von Zeitfeld-Mustern. Der Parser tokenisiert zuerst deine Eingabe bei Leerzeichen, dann klassifiziert er jedes Feld gegen die Grammatik: Platzhalter (*), einzelner Wert (5), Bereich (1-5), Liste (1,15,30) oder Schritt (*/10, 1-5/2). Namensbasierte Aliase wie JAN, MON, DI werden vor dem Abgleich zu numerischen Äquivalenten normalisiert. Feldgrenzen werden gegen ihre erlaubten Bereiche validiert - 0-59 für Minuten, 0-23 für Stunden, 1-31 für Tag-des-Monats, 1-12 für Monate, 0-6 für Wochentag (wobei sowohl 0 als auch 7 in einigen Implementierungen Sonntag bedeuten können).

Das Berechnen der nächsten Ausführungszeiten erfordert das Vorwärtsiterieren durch die Zeit und das Abgleichen jedes Kandidaten-Zeitstempels gegen die Feldmuster. Das Werkzeug beginnt bei new Date(), normalisiert auf Minuten-Präzision und geht Minute für Minute vorwärts, bis es fünf Treffer findet, und gibt sie in Ortszeit zur Anzeige zurück. Dieser Brute-Force-Ansatz ist einfacher als die Feld-für-Feld-"nächster-gültiger-Slot"-Algorithmen, die von Produktions-Cron-Schedulern verwendet werden, aber schnell genug für fünf Vorkommen und transparent genug zum Debuggen. Alles läuft im Browser - es gibt keinen Server-Roundtrip, sodass ungültige Ausdrücke innerhalb eines Rahmens des Klicks markiert werden.

Wann du einen Cron-Ausdruck-Parser verwenden würdest

  • Einen neuen Zeitplan für einen GitHub-Actions-Workflow, einen Jenkins-Trigger oder einen Kubernetes-CronJob erstellen und eine Plausibilitätsprüfung vor dem Committen wollen.
  • Einen Zeitplan debuggen, der zu unerwarteten Zeiten auslöst, indem die genauen nächsten Ausführungszeitstempel, die der Parser gegen deine lokale Uhr erzeugt, gesehen werden.
  • Einen Cron-Ausdruck aus einer Log-Zeile oder einer E-Mail-Warnung in etwas Menschenlesbares für ein Übergabedokument oder ein Runbook übersetzen.
  • Junior-Ingenieuren beibringen, was die Felder bedeuten - die Feldaufschlüsselungs-Tabelle ist expliziter als die knappe crontab-Manpage.
  • Überprüfen, ob die Scheduling-Benutzeroberfläche eines Anbieters (Airflow DAG, AWS EventBridge, Cloudflare Cron Triggers) den Ausdruck erzeugt, den du glaubst zu haben.
  • Wartungsfenster planen, bei denen du sehen möchtest, ob ein bestehender Zeitplan mit einem neuen Deployment kollidiert.

Häufige Fallstricke und Randfälle

Der häufigste Cron-Bug ist die Tag-des-Monats / Wochentag-Interaktion. In Vixie/POSIX-Cron wird der Job ausgeführt, wenn entweder Feld übereinstimmt, wenn beide Felder eingeschränkt sind (keines ist *). So löst 0 0 15 * 1 sowohl am jeden 15. als auch an jedem Montag aus, was fast nie die Absicht ist. Andere Fallen: 31 im Tag-des-Monats-Feld überspringt still kurze Monate; 0 0 29 2 * löst nur am 29. Februar aus (Schaltjahre); Sonntag ist in vielen Implementierungen sowohl 0 als auch 7; die Zeitzone ist die lokale Zone des Cron-Daemons, sodass "3 Uhr" für einen Benutzer in einer anderen Region um 8 Uhr laufen kann. Schrittwerte wie */15 beginnen vom ersten gültigen Wert, nicht von "15 Minuten ab jetzt". Nicht-Standard-Symbole (?, L, W, #) sind Quartz-Erweiterungen und werden von diesem nur-POSIX-Parser nicht unterstützt.

Cron im Kontext: POSIX, Quartz und Cloud-Dialekte

Das ursprüngliche Unix-Cron, von Ken Thompson bei Bell Labs in den 1970er Jahren geschrieben und später von Paul Vixie zu Vixie-Cron ausgebaut, verwendet einen 5-Felder-Ausdruck, der Minute bis Wochentag abdeckt. POSIX kodifizierte das Format, und jedes Unix-ähnliche System sowie die meisten CI-Systeme (Jenkins, CircleCI, GitHub Actions), Kubernetes-CronJobs und Infrastruktur-als-Code-Plattformen akzeptieren es. Quartz - die Java-Scheduling-Bibliothek - erweitert auf 6 oder 7 Felder durch Voranstellen von Sekunden und optionalem Anhängen von Jahr, fügt Sonderzeichen hinzu: L (letzter Tag des Monats), W (nächster Wochentag), # (n-ter Wochentag des Monats) und ? (Disambiguator). AWS EventBridge verwendet eine 6-Felder-Quartz-ähnliche Variante mit eigenen Eigenheiten. Die Kurzbefehle @yearly, @monthly, @weekly, @daily, @hourly und @reboot werden von den meisten Unix-Crons erkannt, aber nicht von jedem Cloud-Scheduler; @reboot läuft speziell einmalig beim Daemon-Start statt in einem wiederkehrenden Zeitplan.

Vergleich mit Alternativen

crontab.guru ist der beliebteste Online-Cron-Decoder - hervorragend für das Standard-5-Felder-Format plus eine sauberere URL-Sharing-Geschichte. cronitor.io fügt Monitoring zum Parsen hinzu. Für Quartz-spezifische Ausdrücke verarbeitet die Java-Bibliothek cron-utils jeden Dialekt nativ. Für die CLI-Nutzung ermöglichen croniter (Python) oder cron-parse skriptbares Parsen. Gegenüber all diesen ist die Nische dieses Werkzeugs transparentes In-Browser-Parsen mit kopierbaren nächsten-Ausführungs-Zeitstempeln, ohne Anmeldung oder Tab-Wechsel. Es verliert, wenn du Quartz-Sonderzeichen (L, W, #, ?) benötigst oder gegen einen bestimmten Anbieter-Parser validieren musst - in diesen Fällen verwende die eigene Zeitplanvorschau des Anbieters.

Häufig gestellte Fragen

Was ist die Struktur eines 5-Felder-Cron-Ausdrucks?

Von links nach rechts: Minute (0-59), Stunde (0-23), Tag-des-Monats (1-31), Monat (1-12 oder JAN-DEZ), Wochentag (0-6 oder SO-SA, wobei 0 und 7 beide Sonntag bedeuten). Felder durch Leerzeichen getrennt, jedes akzeptiert Literal, Liste (Komma), Bereich (Bindestrich), Platzhalter (Sternchen) oder Schritt (Schrägstrich). "0 9 * * 1-5" bedeutet "um 09:00 Uhr Montag bis Freitag" - der Standard-Wochentage-um-9-Uhr-Zeitplan.

Was ist der Unterschied zwischen POSIX-5-Felder-Cron und Quartz-6-Felder-Cron?

POSIX-Cron hat 5 Felder und Minuten-Auflösung. Quartz fügt am Anfang ein Sekundenfeld hinzu (6 Felder insgesamt, ermöglicht Sub-Minuten-Zeitpläne), ein optionales nachgestelltes Jahresfeld (7 Felder) und Sonderzeichen L (letzter), W (nächster Wochentag), # (n-ter Wochentag-des-Monats) und ? (Disambiguator). AWS EventBridge verwendet einen 6-Felder-Dialekt nahe Quartz, aber mit eigenen Eigenheiten. Dieses Werkzeug parsiert die 5-Felder-POSIX-Form; 6/7-Felder-Quartz-Ausdrücke werden bei den zusätzlichen Feldern einen Fehler ausgeben.

Was macht @reboot und warum ist es besonders?

@reboot ist kein Zeitmuster-Ausdruck - er plant einen Befehl, der einmal beim Start des Cron-Daemons ausgeführt wird. Die meisten Unix-ähnlichen Crons erkennen es zusammen mit @yearly, @monthly, @weekly, @daily und @hourly, die Standard-5-Felder-Äquivalenten entsprechen. Cloud-Scheduler unterstützen @reboot fast universell nicht, weil ihre Job-Pools keinen Begriff von "Daemon-Start" haben - sie sind immer aktiv. Dieser Parser behandelt die 5-Felder-Ausdrücke; für @reboot und die @special-Kurzbefehle konsultiere die Dokumentation deiner Cron-Implementierung.

Warum verursacht die Interaktion zwischen Tag-des-Monats und Wochentag Fehler?

In Vixie/POSIX-Cron wird der Job ausgeführt, wenn entweder Tag-des-Monats oder Wochentag übereinstimmt - nicht beide gleichzeitig müssen passen. So löst "0 0 15 * 1" sowohl am jeden 15. des Monats ALS AUCH an jedem Montag aus. Die meisten Leute lesen den Ausdruck als UND. Wenn du UND-Semantik möchtest, benötigst du einen anderen Scheduler oder eine umschließende Bedingung innerhalb des Jobs selbst. Quartz vermeidet das mit dem ?-Zeichen, das explizit sagt "Ignoriere dieses Feld".

Wie behandelt das Werkzeug Zeitzonen für nächste Ausführungszeiten?

Der Parser berechnet die nächsten Ausführungszeitstempel mit der lokalen Zeitzone des Browsers. Dein tatsächlicher Cron-Daemon - auf einem Linux-Server, in einem Container oder auf einer Cloud-Plattform - läuft möglicherweise in UTC oder einer anderen Zone, in diesem Fall werden die hier angezeigten Zeiten von der Realität abweichen. Überprüfe die Zeitzone deines Cron-Hosts (unter Linux /etc/timezone oder `date`-Ausgabe) und passe an. Für Cloud-Scheduler wie GitHub Actions ist der Standard meistens UTC.

Was bedeutet */5 und wo beginnt es zu zählen?

Der Schrägstrich-Schritt-Operator bedeutet "alle N-ten Werte beginnend vom niedrigsten Treffer". So erzeugt */5 im Minutenfeld 0, 5, 10, 15, ..., 55 - es beginnt bei 0 (der niedrigsten gültigen Minute) und schreitet um 5 vor. Entscheidend ist, es bedeutet NICHT "alle 5 Minuten ab jetzt". Bereiche können auch übersprungen werden: 10-20/3 bedeutet "im Bereich 10 bis 20, alle 3 Werte", erzeugt 10, 13, 16, 19.

Kann ich Monats- und Tagesnamen wie JAN oder MON verwenden?

Ja. Drei-Buchstaben-Abkürzungen sind eine POSIX-anerkannte Alternative zu Zahlen: JAN bis DEZ für Monate, SO bis SA für Wochentage. Der Parser normalisiert sie vor dem Abgleich zu numerischen Äquivalenten. Bereiche und Listen können sie mischen (MON-FRI, JAN,JUN,DEZ). Groß-/Kleinschreibungsunterschiede und einige längere Namen werden typischerweise akzeptiert.

Wird mein Cron-Ausdruck für das Parsen an einen Server gesendet?

Nein. Tokenisierung, Validierung, Feldaufschlüsselung und Berechnung der nächsten Ausführungszeit erfolgen alle in JavaScript in deinem Browser-Tab. Es gibt keinen Fetch-Aufruf, wenn du auf Parse klickst, und keine Telemetrie, die den Ausdruckstext trägt. Das ist wichtig, weil Produktionszeitpläne manchmal Kunden-IDs, Mandantennamen oder interne Projektkodes kodieren, die du vernünftigerweise von einem fremden Server fernhalten möchtest.

Warum gibt es keine Sub-Minuten-Präzision?

POSIX-Cron hat Minuten-Auflösung. Es gibt kein Sekundenfeld - eine bewusste Designentscheidung aus den 1970er Jahren, bei der der Cron-Daemon ungefähr einmal pro Minute aufwacht und auf Jobs prüft. Quartz und einige moderne Scheduler (AWS, Azure Functions, Kubernetes mit Erweiterungen) fügen Sekunden hinzu, aber der 5-Felder-Standard nicht. Für Sub-Minuten-Scheduling benötigst du eine andere Werkzeugklasse - eine Nachrichtenwarteschlange, einen systemd-Timer mit OnCalendar oder einen dedizierten Job-Runner.

Verwandte Tools

Mehr Developer Tools

ZeroUtil unterstützen