Crontab Generator & Cron-Ausdruck Builder
Erstellen, validieren und entschlüsseln Sie Cron-Ausdrücke im Browser. Live-Vorschau der nächsten Läufe in lokaler Zeit oder UTC. POSIX-5-Feld-Syntax, Voreinstellungen, Klartextbeschreibung. Kostenlos, privat, ohne Anmeldung.
Klartext
—
Nächste 5 geplante Läufe
Was ist ein Cron-Ausdruck?
Ein Cron-Ausdruck ist eine Zeichenkette aus fünf Feldern, die einen wiederkehrenden Zeitplan definiert. Von links nach rechts sind die Felder Minute (0-59), Stunde (0-23), Tag des Monats (1-31), Monat (1-12) und Wochentag (0-6, wobei 0 und 7 beide Sonntag bedeuten). Jedes Feld akzeptiert einen Wert, eine Liste (`1,3,5`), einen Bereich (`1-5`), einen Platzhalter (`*` für jeden Wert) oder einen Schritt (`*/15` für alle 15). Die Kombination definiert genau, wann der geplante Befehl laufen wird — `0 9 * * 1-5` liest sich zum Beispiel als „bei Minute 0, Stunde 9, jeder Tag des Monats, jeder Monat, Wochentag Montag bis Freitag" — im Klartext „werktags um 09:00 Uhr".
Cron entstand 1979 in Unix Version 7, und die Fünf-Feld-Grammatik ist seit über vier Jahrzehnten im Wesentlichen unverändert geblieben — ein Beleg dafür, wie gut die ursprüngliche Syntax entworfen wurde. Heute werden Cron-Ausdrücke weit über die Unix-crontab-Datei hinaus eingesetzt: Kubernetes CronJobs, GitHub-Actions-Workflows, AWS-EventBridge-Regeln, geplante GitLab-CI-Pipelines, Cloudflare Workers Cron Triggers und Serverless-Plattformen in jeder Cloud akzeptieren dieselbe Fünf-Feld-Grammatik. Cron einmal zu lernen, bedeutet, in jeder modernen Infrastruktur Jobs einplanen zu können.
Der POSIX-Standard definiert fünf Operatoren: `*` (beliebiger Wert), `,` (Werteliste), `-` (Bereich), `/` (Schritt) sowie benannte Tokens für Monate (JAN-DEC) und Wochentage (SUN-SAT). Die meisten Implementierungen expandieren außerdem fünf gängige Abkürzungen: `@yearly` (`0 0 1 1 *`), `@monthly` (`0 0 1 * *`), `@weekly` (`0 0 * * 0`), `@daily` (`0 0 * * *`) und `@hourly` (`0 * * * *`). Der Quartz-Scheduler (eine Java-Bibliothek) erweitert dies um ein optionales Sekundenfeld und zusätzliche Operatoren (`?`, `L`, `W`, `#`) — nützlich, wenn Sie in Java/Spring arbeiten, aber nicht portabel zu Standard-cron. Dieses Tool folgt dem POSIX-Fünf-Feld-Standard, weil er die dominante Variante ist und die, die Ihr Linux-Server, Ihr GitHub-Actions-Runner und Ihr Kubernetes-Cluster tatsächlich verstehen werden.
Eine Eigenheit von POSIX-cron verdient besondere Beachtung: Wenn sowohl Tag des Monats als auch Wochentag eingeschränkt sind (keiner ist `*`), läuft der Zeitplan, wenn EINES VON BEIDEN zutrifft — OR-Semantik, nicht AND. `0 0 1 * 5` läuft also am 1. jedes Monats UND an jedem Freitag, nicht nur an Freitagen, die zufällig auf den 1. fallen. Das ist die mit Abstand häufigste Cron-Überraschung; die Vorschau der nächsten Läufe in diesem Tool macht es offensichtlich, indem sie die tatsächlichen Datums-/Zeitangaben zeigt, an denen der Zeitplan feuert. Verifizieren Sie vor dem Deployment.
Sämtliches Parsen und Berechnen der nächsten Läufe findet vollständig in Ihrem Browser mittels JavaScript statt — es werden weder Ausdrücke, Zeitpläne noch sonstige Daten an einen Server gesendet. Dieses Tool parst jeden standardkonformen POSIX-Cron-Ausdruck sofort mit einer Klartextbeschreibung und einer Vorschau über fünf Läufe — bei vollständiger Privatsphäre.
Cron-Ausdrücke sind eng mit anderen Entwicklertools verwandt. Cron-Jobs werden häufig debuggt, indem Unix-Zeitstempel mit den erwarteten Laufzeiten verglichen werden, und komplexe Zeitpläne werden oft als JSON-Konfiguration dokumentiert, die sich mit unserem JSON-Formatierer validieren lässt. Für einen ausführlichen Leitfaden, der die OR-Semantik, Zeitzonenfallen und gängige Cron-Varianten mit Beispielen für Linux, Kubernetes und GitHub Actions abdeckt, lesen Sie unsere Cron-Zeitplan-Referenz.
# Linux crontab entry — runs every 15 minutes
*/15 * * * * /usr/local/bin/poll-api.sh
# Kubernetes CronJob — weekdays at 9:00 AM UTC
apiVersion: batch/v1
kind: CronJob
metadata:
name: daily-report
spec:
schedule: "0 9 * * 1-5"
timeZone: "UTC"
jobTemplate:
spec:
template:
spec:
containers:
- name: report
image: report-runner:1.0
restartPolicy: OnFailure
# GitHub Actions workflow — hourly
on:
schedule:
- cron: '0 * * * *'
# AWS EventBridge — first of each month
ScheduleExpression: cron(0 0 1 * ? *)
# (Note: AWS uses the Quartz 6-field form with '?' for day-of-week) Hauptfunktionen
Live-POSIX-5-Feld-Parser
Strikter Parser nach POSIX-cron: Minute (0-59), Stunde (0-23), Tag des Monats (1-31), Monat (1-12 oder JAN-DEC), Wochentag (0-6 oder SUN-SAT, wobei 7 ebenfalls Sonntag akzeptiert). Alle Standardoperatoren (`*` `,` `-` `/`) und Makros (`@yearly` `@monthly` `@weekly` `@daily` `@hourly`) werden unterstützt.
Vorschau der nächsten 5 Läufe
Berechnet die nächsten fünf geplanten Laufzeiten ab Ihrer aktuellen lokalen Zeit. Wechseln Sie mit einem Klick zwischen Lokal und UTC — die zuverlässigste Methode, um Zeitzonenüberraschungen zu erkennen, bevor Sie eine crontab auf einen Server in einer anderen Region deployen.
Klartextbeschreibung
Jeder gültige Ausdruck erhält eine menschenlesbare Erklärung: „Alle 15 Minuten", „Werktags um 09:00 Uhr", „Um 02:30 am 1. Tag des Monats, im Januar und Juli". Macht Code-Review und Team-Übergabe mühelos — kein Rätselraten mehr, was `*/5 9-17 * * 1-5` tatsächlich tut.
Feldspezifische Fehlermeldungen
Ungültige Ausdrücke erhalten sofortiges rotes Feedback mit dem fehlerhaften Feld hervorgehoben und einem spezifischen Fehler: „Fehler in Minute: Wert außerhalb des Bereichs [0, 59]: "60"". Keine stillen crontab-Fehler mehr, die drei Tage später entdeckt werden, wenn der Bericht nicht gelaufen ist.
Preset-Chips für gängige Zeitpläne
Elf Ein-Klick-Voreinstellungen decken die Zeitpläne ab, die Sie tatsächlich nutzen werden: jede Minute, alle 5/15 Minuten, jede Stunde, täglich um Mitternacht oder 9 Uhr, werktags um 9 Uhr, wöchentlich am Sonntag/Montag, am 1. jedes Monats und jährlich. Antippen, anpassen, ausrollen.
Eingaben für Builder pro Feld
Sie müssen sich die Fünf-Feld-Reihenfolge nicht merken — fünf kleine Eingaben mit den Bezeichnungen Minute, Stunde, Tag des Monats, Monat, Wochentag lassen Sie eine Position nach der anderen bearbeiten, ohne einen Wert auszulassen oder die Reihenfolge zu verwechseln. Der vollständige Ausdruck oben wird automatisch neu aufgebaut.
POSIX-OR-Semantik richtig umgesetzt
Wenn sowohl Tag des Monats als auch Wochentag eingeschränkt sind, greift die OR-Regel — `0 0 1 * 5` läuft an jedem 1. UND an jedem Freitag. Die Vorschau der nächsten Läufe macht das sichtbar, bevor Sie deployen; keine überraschenden Wochenend-Pages mehr.
100 % browserbasierte Privatsphäre
Ihre Cron-Ausdrücke — die oft Infrastruktur-Timing und interne Scheduling-Muster offenlegen — verlassen Ihren Browser nie. Es werden keine Daten an einen Server gesendet, kein Logging, keine Analytics. Sie können das im Netzwerk-Tab Ihres Browsers überprüfen. Sicher für Produktionszeitpläne und interne Systeme.
Quartz-bewusste Fehlermeldungen
Wenn Sie einen Quartz-Ausdruck mit `?` `L` `W` oder `#` einfügen, erklärt der Parser „Quartz operators not supported — use POSIX syntax", damit Sie wissen, dass Sie für cron umschreiben müssen, statt einen stillen Fehlschlag zu debuggen. Quartz-Zeitpläne laufen nicht auf Linux-cron.
Cron-Varianten & Scheduler
Vixie cron (Linux-Standard)
5-Feld POSIXDer Standard auf den meisten Linux-Distributionen. Striktes POSIX mit der Erweiterung `CRON_TZ=` für explizite Zeitzone. OR-Semantik für Tag des Monats / Wochentag gilt. Hauptziel dieses Tools.
BSD cron
5-Feld POSIXStandard auf macOS und in der BSD-Familie. POSIX-kompatibel mit kleineren Implementierungsunterschieden zu vixie cron; die meisten Ausdrücke funktionieren identisch.
systemd-Timer (OnCalendar)
Kalender-Spec, kein cronAlternative zu cron auf systemd-basiertem Linux. Verwendet die Syntax `OnCalendar: 2026-*-* 09:00:00` — lesbarer für nicht-wiederkehrende Zeitpläne, aber nicht interoperabel mit Cron-Ausdrücken.
Quartz Scheduler (Java/Spring)
6 oder 7 FelderErgänzt Sekunden (Pflicht) und Jahr (optional) als Felder sowie die Operatoren `?`, `L`, `W`, `#`. Nützlich für Java-Apps, aber nicht portabel zu Linux-cron.
AWS EventBridge
6-Feld Quartz-Stil mit `?`Verlangt, dass Wochentag oder Tag des Monats `?` ist (Quartz-Konvention) statt `*`, wenn nur einer eingeschränkt ist. Ausdrücke lassen sich nicht direkt auf Linux-cron portieren.
Kubernetes CronJob
5-Feld POSIX + timeZone-FeldPOSIX-5-Feld-Zeitplan plus Feld `spec.timeZone` (1.27+). Sauberer, als sich auf die Host-Zeitzone des kubelet zu verlassen. Ausdrücke portieren direkt von Linux-cron.
GitHub Actions
5-Feld POSIXLäuft immer in UTC. Best-Effort-Timing — kann unter hoher Last übersprungen werden. Vermeiden Sie Intervalle kürzer als 15 Minuten. Ausdrücke portieren direkt von Linux-cron.
Beispiele für Cron-Ausdrücke
Alle 15 Minuten
*/15 * * * *
Schrittoperator: `*/15` im Minutenfeld bedeutet „alle 15 Minuten, beginnend bei Minute 0" — Läufe also bei :00, :15, :30, :45 in jeder Stunde jedes Tages. Das gängigste Intervall für API-Polling, Cache-Aktualisierung und Heartbeat-Prüfungen.
Werktags um 09:00 Uhr
0 9 * * 1-5
Der Bereich `1-5` im Wochentagsfeld bedeutet Montag bis Freitag (1=Mo, 5=Fr). Läuft exakt um 09:00 — nützlich für Berichte zu Geschäftszeiten, Batch-Jobs, die auf Daten aus der Nacht angewiesen sind, und tägliche Standup-Erinnerungen.
Am 1. jedes Monats um Mitternacht
0 0 1 * *
Tag des Monats `1`, alle anderen unteren Felder auf null. Gängig für monatliche Abrechnungen, Logrotation und Periodenabschluss-Abgleich. Tag des Monats und Wochentag sind beide nur eingeschränkt, wenn keiner `*` ist — hier ist der Wochentag `*`, also zählt nur der Tag des Monats.
Alle 5 Minuten zwischen 9 und 17 Uhr, werktags
*/5 9-17 * * 1-5
Kombiniert Schritt (`*/5`) mit Bereich (`9-17`) in verschiedenen Feldern. Nützlich für Monitoring ausschließlich in Geschäftszeiten oder das Abarbeiten von Queues. Insgesamt: 12 Läufe/Std × 9 Std × 5 Tage = 540 Läufe pro Arbeitswoche.
Quartalsweise: 1. Jan, Apr, Jul, Okt um Mitternacht
0 0 1 JAN,APR,JUL,OCT *
Benannte Monate in einer kommagetrennten Liste. Quartalspläne wie Finanzabschluss, Code-Freeze-Reviews oder Compliance-Audits. Sie können Namen und Zahlen mischen (`1,APR,7,10` parst identisch), aber bleiben Sie der Lesbarkeit halber bei einem Stil.
POSIX-OR-Falle: 1. des Monats ODER jeden Freitag
0 0 1 * 5
Wenn SOWOHL Tag des Monats (`1`) ALS AUCH Wochentag (`5`) eingeschränkt sind, läuft POSIX-cron den Job, wenn EINES VON BEIDEN zutrifft. Das feuert also am 1. jedes Monats UND an jedem Freitag — nicht nur an Freitagen, die auf den 1. fallen. Das ist die mit Abstand häufigste Cron-Überraschung; die Vorschau der nächsten Läufe macht es offensichtlich.
Täglich um 02:30 (Niedriglast-Fenster)
30 2 * * *
Spezifische Werte für Stunde und Minute, Platzhalter an den übrigen Stellen. Das Fenster 02:00–04:00 UTC ist die De-facto-Konvention für nächtliche Batch-Jobs, weil es sich mit keiner wichtigen Geschäftsregion überschneidet. Kombinieren Sie es mit dem UTC-Zeitzonen-Toggle, um zu bestätigen, dass der Lauf dort landet, wo Sie ihn erwarten.
Makro-Äquivalent: @daily
@daily
Die Abkürzung `@daily` (auch `@midnight`) expandiert zu `0 0 * * *` — jeden Tag um Mitternacht. Weitere Makros: `@yearly` = `0 0 1 1 *`, `@monthly` = `0 0 1 * *`, `@weekly` = `0 0 * * 0`, `@hourly` = `0 * * * *`. Makros sind kompakt, aber die Fünf-Feld-Form ist über Scheduler hinweg portabler (manche unterstützen Makros, andere nicht).
Wie man einen Cron-Ausdruck baut
- 1
Cron-Ausdruck eintippen oder einfügen
Geben Sie einen Fünf-Feld-Cron-Ausdruck in das obige Eingabefeld ein (z. B. `*/15 * * * *`). Das Tool parst und validiert während des Tippens — grüner Haken für gültig, roter Fehler mit Feldname für ungültig. Makros wie `@daily`, `@hourly` etc. werden ebenfalls akzeptiert.
- 2
Oder die fünf Feldeingaben anpassen
Sie müssen sich die Feldreihenfolge nicht merken — bearbeiten Sie Minute, Stunde, Tag des Monats, Monat oder Wochentag einzeln über die beschrifteten Eingaben. Der vollständige Ausdruck oben aktualisiert sich automatisch. Verwenden Sie `*` für Platzhalter, `*/N` für Schritte, `a-b` für Bereiche und `1,3,5` für Listen.
- 3
Eine Voreinstellung als Startpunkt wählen
Tippen Sie einen beliebigen Preset-Chip an (Alle 15 Minuten, Werktags um 9 Uhr usw.), um einen gängigen Zeitplan zu laden, und passen Sie dann die Felder an Ihren genauen Bedarf an. Elf Voreinstellungen decken die Muster ab, die Sie in der Produktion tatsächlich nutzen werden.
- 4
Vorschau der nächsten Läufe prüfen
Sehen Sie sich die fünf anstehenden Lauf-Datumsangaben an — wechseln Sie zwischen Lokal und UTC, um zu bestätigen, dass der Zeitplan feuert, wenn Sie es beabsichtigen. Das ist die zuverlässigste Methode, um die POSIX-Tag-des-Monats-/Wochentags-OR-Falle abzufangen, bevor sie Sie in der Produktion erwischt.
- 5
Kopieren und in Ihren Scheduler einfügen
Klicken Sie auf Kopieren, um den Ausdruck zu übernehmen. Fügen Sie ihn in Ihre crontab, Ihren systemd-Timer, das `cron:` in GitHub Actions, AWS EventBridge, das `schedule` eines Kubernetes CronJob oder einen beliebigen cron-kompatiblen Scheduler ein. Vergessen Sie nicht, die Zeitzone des Ziel-Schedulers zu überprüfen — siehe den Abschnitt Best Practices unten.
Häufige Cron-Fehler
POSIX-OR-Falle: Beide Tag-Felder eingeschränkt
Wenn SOWOHL Tag des Monats ALS AUCH Wochentag eingeschränkt sind, läuft POSIX-cron den Job, wenn EINES VON BEIDEN zutrifft — nicht beide. `0 0 1 * 5` feuert also am 1. jedes Monats UND an jedem Freitag, nicht nur an Freitagen, die auf den 1. fallen. Verwenden Sie `*` in einem der beiden Tag-Felder, wenn Sie eine einzelne Bedingung wollen, oder schreiben Sie ein Wrapper-Skript, das die AND-Prüfung durchführt.
# Beabsichtigt: „erster Freitag des Monats" 0 0 1-7 * 5 # Tatsächlich: feuert an Tagen 1-7 des Monats ODER an jedem Freitag — beide Bedingungen
# Wrapper für echte AND-Semantik verwenden 0 0 * * 5 [ $(date +\%d) -le 7 ] && /your-script # ODER eine Bedingung weglassen und den lockereren Zeitplan akzeptieren
Zeitzonen-Drift zwischen Dev und Prod
Cron-Zeitpläne auf einem Linux-Server verwenden die System-Zeitzone, nicht die lokale Zeitzone des Autors. Ein cron um 09:00 auf einem auf UTC eingestellten Server feuert um 04:00 US East. Entwerfen Sie Zeitpläne immer gegen die Zeitzone des Zielservers — am besten UTC — und fixieren Sie die Zeitzone explizit mit `CRON_TZ=...` am Anfang der crontab.
# Geschrieben von US-East-Dev, deployt auf UTC-Server 0 9 * * * /your-report.sh # Feuert um 09:00 UTC = 04:00 US East — nicht, was der Dev meinte
# Zeitzone fixieren oder explizit in UTC schreiben CRON_TZ=America/New_York 0 9 * * * /your-report.sh
Verwirrung beim Schrittoperator: '*/15' vs. '15'
`*/15` in Minute bedeutet „alle 15 Minuten, beginnend bei 0" (also 0, 15, 30, 45). Nur `15` bedeutet „nur zur Minute 15" — ein Lauf pro Stunde. Anfänger schreiben häufig `15` in der Annahme, das wäre alle 15 Minuten; die Klartextbeschreibung des Tools macht den Fehler vor dem Deployment offensichtlich.
# Beabsichtigt: alle 15 Minuten 15 * * * * # Tatsächlich: einmal pro Stunde, zur Minute 15 (4 Läufe/Stunde weniger als beabsichtigt)
# Korrekt */15 * * * * # Alle 15 Minuten: Minute 0, 15, 30, 45 jeder Stunde
Sechs-Feld-Ausdruck auf POSIX-Scheduler
Quartz/Spring/node-cron unterstützen ein optionales Sekundenfeld als erste Position. Linux-crontab, GitHub Actions, AWS EventBridge (meist) und Kubernetes CronJob tun das NICHT — sie erwarten fünf Felder. Das Einfügen eines Sechs-Feld-Ausdrucks bricht den Zeitplan stillschweigend: Ihre Sekunden werden zu Minuten, Minuten zu Stunden usw.
# Quartz-6-Feld in Linux-crontab kopiert 0 0 9 * * 1-5 # Linux liest: Minute=0, Stunde=0, dom=9, Monat=*, dow=1-5 # = Mitternacht an Tagen 9 in Monaten mit passendem Wochentag — Chaos
# POSIX-5-Feld, Sekunden weglassen 0 9 * * 1-5 # = werktags um 09:00 Uhr
Tag des Monats außerhalb des Bereichs für den Monat
Cron validiert den Tag des Monats nicht gegen den tatsächlichen Monat. `0 0 31 2 *` (31. Februar) parst problemlos, trifft aber nie zu — der Februar hat höchstens 29 Tage. Anfänger gehen davon aus, dass der Parser das abfängt; tut er nicht. Die Vorschau der nächsten Läufe in diesem Tool zeigt „Keine anstehenden Läufe", wenn ein Ausdruck strukturell gültig, aber logisch unmöglich ist.
# 30. oder 31. Februar — läuft nie 0 0 30 2 * 0 0 31 2 * # Parst, aber kein Zeitplan feuert je
# Muster „letzter Wochentag im Februar" per Skript 0 0 28-29 2 * [ $(date -d tomorrow +\%m) = 03 ] && /your-script
Quartz-Syntax mit POSIX verwechselt
AWS-Doku, Spring-Tutorials und viele Stack-Overflow-Antworten zeigen Quartz-Cron-Ausdrücke mit `?`, `L`, `W` oder `#`. Diese funktionieren nicht in Linux-crontab. Wenn Sie einen Sechs-Feld-Ausdruck mit `?` im Wochentag-Slot kopieren, wird der Linux-Parser ihn ablehnen (oder schlimmer, stillschweigend falsch parsen). Dieses Tool fängt Quartz-Operatoren ab und erklärt den Unterschied.
# Quartz: „letzter Freitag des Monats" — in POSIX ungültig 0 0 ? * 6L *
# POSIX-Wrapper-Skript-Ansatz für letzten Freitag 0 0 25-31 * 5 /your-script # Läuft freitags zwischen dem 25. und 31. eines beliebigen Monats
Häufige Anwendungsfälle
- Linux-crontab-Jobs
- Erstellen und verifizieren Sie Einträge für `/etc/crontab`, `/etc/cron.d/*` oder benutzerspezifische `crontab -e`-Dateien. Verwenden Sie die Vorschau der nächsten Läufe, um vor dem Speichern zu bestätigen, dass der Zeitplan in der konfigurierten Zeitzone Ihres Servers zur richtigen Zeit landet.
- Kubernetes-CronJob-Zeitpläne
- Erzeugen Sie das Feld `spec.schedule` für einen Kubernetes CronJob. Kubernetes 1.27+ unterstützt außerdem `spec.timeZone` — nutzen Sie den UTC-Toggle, um Ihren Zeitplan in UTC zu entwerfen, und setzen Sie dann `timeZone` explizit, um die lokale Zeit des Worker-Nodes zu umgehen.
- Geplante GitHub-Actions-Workflows
- Bauen Sie den `cron:`-Eintrag unter `on.schedule`. GitHub Actions läuft immer in UTC — schalten Sie die Vorschau auf UTC um, um Ihren Zeitplan zu bestätigen. Vermeiden Sie Intervalle kürzer als 15 Minuten; der Scheduler von GitHub überspringt Kurzintervalljobs unter Last.
- AWS-EventBridge-Regeln
- Komponieren Sie den Cron-Ausdruck für eine geplante EventBridge-Regel. Hinweis: AWS verwendet die Quartz-artige Sechs-Feld-Syntax mit `?` für den Wochentag — dieses Tool liefert POSIX-Fünf-Feld, das Sie umwandeln müssen, indem Sie Sekunden (`0`) voranstellen und das `*` in einem der beiden Tag-Felder durch `?` ersetzen.
- Geplante GitLab-CI-Pipelines
- Verifizieren Sie den Cron-Ausdruck für eine geplante CI-Pipeline in GitLab. GitLab verwendet POSIX-Fünf-Feld-Syntax — also das, was dieses Tool ausgibt — und einen UI-Datumspicker, aber das Cron-Formular gibt Ihnen feinere Kontrolle für nicht-standardmäßige Intervalle.
- Cloudflare Workers Cron Triggers
- Bauen Sie den `[triggers.crons]`-Eintrag in `wrangler.toml`. Cloudflare verwendet POSIX-Fünf-Feld-Syntax. Minimales Intervall ist eine Minute; der Worker läuft in UTC. Verwenden Sie die Vorschau, um zu prüfen, dass der Trigger innerhalb Ihres erwarteten Fensters feuert.
- Node.js-node-cron-Zeitpläne
- Erstellen Sie Ausdrücke für die Bibliothek `node-cron`, die sowohl POSIX mit fünf Feldern als auch ein optionales vorangestelltes Sekundenfeld unterstützt. Bleiben Sie bei fünf Feldern, es sei denn, Sie benötigen ausdrücklich Sub-Minuten-Präzision — Sechs-Feld-Ausdrücke lassen sich nicht in Linux-crontab portieren.
- Code-Review und Dokumentation
- Fügen Sie einen Cron-Ausdruck aus einem PR oder Runbook ein, um sofort zu sehen, was er tut — kein Rätselraten mehr bei `30 7 * * 1-5` und kein Herauskramen einer Referenzkarte. Die Klartextbeschreibung eignet sich auch hervorragend für Inline-Kommentare und README-Dateien.
Cron-Syntax-Referenz
- Feldreihenfolge: M H D M W
- Minute (0-59), Stunde (0-23), Tag des Monats (1-31), Monat (1-12), Wochentag (0-6, 7 = ebenfalls Sonntag). Eselsbrücke: „My Hat Doesn't Match Wendy's". Das Wochentagsfeld akzeptiert sowohl numerische (0-6) als auch benannte Tokens (SUN-SAT, Groß-/Kleinschreibung egal).
- Operatoren
- `*` = beliebiger Wert; `,` = Listentrenner (`1,3,5`); `-` = Bereich (`1-5`); `/` = Schritt (`*/15`, `5/10`); Namen: JAN-DEC für Monat, SUN-SAT für Wochentag (Groß-/Kleinschreibung egal).
- Makros (Aliase)
- `@yearly` = `0 0 1 1 *`; `@annually` = `0 0 1 1 *`; `@monthly` = `0 0 1 * *`; `@weekly` = `0 0 * * 0`; `@daily` = `0 0 * * *`; `@midnight` = `0 0 * * *`; `@hourly` = `0 * * * *`. `@reboot` ist ein spezielles Nicht-Schedule (läuft nur beim Booten) und wird mit einer erklärenden Fehlermeldung abgelehnt.
- POSIX-Tag-Semantik (OR-Regel)
- Wenn SOWOHL Tag des Monats ALS AUCH Wochentag eingeschränkt sind (keines ist `*`), läuft der Zeitplan, wenn EINES VON BEIDEN zutrifft — OR-Semantik. Wenn nur eines eingeschränkt ist, entscheidet dieses. Sind beide `*`, passt jeder Tag. Diese OR-Regel gilt für vixie cron, BSD cron und die meisten POSIX-Implementierungen; Quartz nutzt `?`, um AND vs. OR zu disambiguieren.
- Sechs-Feld-Modus (Quartz-Lite)
- Wenn Ihre Eingabe sechs durch Leerzeichen getrennte Tokens hat, behandelt das Tool das erste als Sekundenfeld (0-59). Nützlich für Quartz, Spring `@Scheduled(cron=...)` und node-cron. NICHT portabel zu Linux-crontab oder POSIX-Schedulern — sie würden Ihre Sekunden als Minuten interpretieren und alles um eine Position verschieben.
- Verankerung des Schrittoperators
- `*/N` ist am niedrigsten Wert des Feldes verankert: `*/15` in Minute = `0,15,30,45`, nicht „alle 15 ab jetzt". Mit einer Basis ohne Platzhalter: `5/15` in Minute = `5,20,35,50`. Schrittwerte, die den Feldbereich nicht gleichmäßig teilen, überspringen am Rollover — das ist korrekt, kein Bug.
- Validierungsgrenzen
- Minute ∈ [0,59], Stunde ∈ [0,23], Tag des Monats ∈ [1,31], Monat ∈ [1,12], Wochentag ∈ [0,7]. Werte außerhalb des Bereichs erzeugen einen feldspezifischen Fehler. Der Tag des Monats wird NICHT gegen den Monat validiert (`0 0 31 2 *` parst problemlos, trifft aber nie zu, weil Februar keinen 31. hat — die Vorschau der nächsten Läufe zeigt „Keine anstehenden Läufe").
- Quartz-Operatoren werden abgelehnt
- POSIX-cron unterstützt Quartz' `?` (kein bestimmter Wert), `L` (letzter), `W` (nächstgelegener Wochentag) oder `#` (n-ter Wochentag) nicht. Dieses Tool lehnt sie mit einer klaren „Quartz operators not supported"-Meldung ab, statt sie stillschweigend als ungültiges POSIX zu parsen. Für Quartz-Zeitpläne verwenden Sie stattdessen ein Quartz-bewusstes Tool oder den Spring-Scheduler.
- Jahresgrenze bei der Suche nach dem nächsten Lauf
- Die Berechnung des nächsten Laufs sucht bis zu 4 Jahre nach vorne; Ausdrücke, die seltener als das zutreffen (z. B. Muster „29. Februar"), zeigen „Keine anstehenden Läufe in den nächsten 4 Jahren". Das ist beabsichtigt, um unbegrenzte Iteration auf unmöglichen Mustern zu vermeiden.
Best Practices für Cron-Zeitpläne
- UTC auf Servern verwenden, zur Anzeigezeit umrechnen
- Setzen Sie Ihre Server auf UTC (`/etc/timezone` oder `TZ=UTC`) und schreiben Sie alle Cron-Ausdrücke in UTC. Rechnen Sie erst zur Anzeigezeit in Ihren Dashboards und Berichten in die lokale Zeit um. Das eliminiert eine ganze Kategorie von Zeitzonen-Bugs, die bei Sommerzeit-Wechseln am härtesten zuschlagen, wenn Zeitpläne in lokaler Zeit stillschweigend doppelt feuern oder einen Lauf überspringen. Verwenden Sie den UTC-Toggle in diesem Tool, um Ihren Zeitplan von Anfang an in UTC zu entwerfen.
- POSIX-Tag-des-Monats/Wochentag-OR-Falle vermeiden
- Schränken Sie niemals sowohl Tag des Monats ALS AUCH Wochentag ein, es sei denn, Sie wollen OR-Semantik. Wenn Sie „jeden Montag im Januar" wollen, schreiben Sie `0 0 * 1 1` (Tag des Monats ist `*`); wenn Sie „den 1. jedes Monats" wollen, schreiben Sie `0 0 1 * *` (Wochentag ist `*`). Die POSIX-OR-Regel bewirkt, dass `0 0 1 * 1` am 1. UND an jedem Montag läuft — fast sicher nicht das, was Sie beabsichtigt haben. Die Vorschau der nächsten Läufe fängt das ab, wenn Sie vor dem Deployment prüfen.
- Zeitzone des Zeitplans explizit fixieren
- Moderne Scheduler unterstützen das Fixieren der Zeitzone in der Zeitplandefinition: `CRON_TZ=America/New_York` am Anfang einer crontab (vixie cron 3.0+), `spec.timeZone: "America/New_York"` für Kubernetes CronJobs 1.27+, Schedule-Ausdruck mit `ScheduleExpressionTimezone` für AWS EventBridge Scheduler. Fixieren Sie die Zeitzone explizit, statt sich auf den Standard des Servers zu verlassen — Server-Zeitzonen können sich bei Infrastruktur-Migrationen ohne Vorwarnung ändern.
- Last über Minuten verteilen, nicht auf :00
- Vermeiden Sie `0 * * * *` (jede Stunde zur Minute 0) für unkritische Jobs — im großen Maßstab erzeugt das Planen vieler Dinge exakt zur Minute :00 Lastspitzen. Wählen Sie einen zufälligen Minuten-Offset (`23 * * * *`, `41 * * * *`) für jeden Job, um die Last zu verteilen. Dasselbe gilt für tägliche Jobs: `30 3 * * *` ist für Ihre Datenbank freundlicher als `0 3 * * *`, wenn viele Jobs auf 03:00 zusammenlaufen.
- Jobs idempotent machen
- Cron hat keinen eingebauten Retry, keine Überlappungsverhinderung, keine Wiederherstellung verpasster Läufe. Ihr Job sollte mehrfach ausgeführt werden können (idempotent) und sich selbst prüfen. Statt „Bericht um 9 Uhr verschicken" entwerfen Sie ihn als „heutigen Bericht verschicken, falls noch nicht verschickt" — das heilt sich selbst nach Ausfallzeiten, versehentlichen doppelten Zeitplänen und gleichzeitigen Läufen. Idempotenz ist eine Eigenschaft des Jobs, nicht des Schedulers, und sie ist die wichtigste Zuverlässigkeitspraxis.
- Heartbeat für kritische Zeitpläne hinzufügen
- Der stille Fehlermodus von cron ist seine größte Schwäche — wenn der Zeitplan nicht feuert, sagt Ihnen nichts Bescheid. Lassen Sie bei kritischen Jobs den Job am Ende jedes Laufs einen Heartbeat-Dienst (Healthchecks.io, Cronitor, Dead Man's Snitch) anpingen; der Dienst alarmiert Sie, wenn der erwartete Ping ausbleibt. Das erfasst sowohl das Scheitern des Jobs als auch das Fehlfeuern des Zeitplans selbst. Der kostenlose Tarif deckt die meisten persönlichen und kleinen Team-Anforderungen ab.
- Mit der Vorschau der nächsten Läufe vor dem Ausrollen verifizieren
- Bevor Sie einen neuen Cron-Zeitplan deployen, sehen Sie sich die fünf anstehenden Lauf-Datumsangaben in der Vorschau dieses Tools an. Wechseln Sie zwischen Lokal und UTC. Bestätigen Sie, dass der Zeitplan landet, wenn Sie es beabsichtigen — nicht fünf Minuten zu früh, nicht am falschen Tag, nicht unter Auslassung des Wochenendes, das Ihnen wichtig war. Die Vorschau ist der billigste denkbare Produktionstest.
Häufig gestellte Fragen
Was macht dieses Tool?
Was ist ein Cron-Ausdruck?
Werden meine Daten irgendwohin hochgeladen?
Was ist der Unterschied zwischen POSIX-cron und Quartz?
Warum läuft '0 0 1 * 5' an jedem Freitag UND am 1.?
Wie lasse ich einen Job alle 30 Sekunden laufen?
Welche Zeitzone verwendet cron?
Worauf expandiert '*/15' eigentlich?
Kann ich einen Sechs-Feld-Ausdruck mit Sekunden verwenden?
Welches maximale Intervall kann cron ausdrücken?
Wie gehe ich mit verpassten Läufen nach Ausfallzeiten um?
Warum läuft mein GitHub-Actions-cron nicht pünktlich?
Verwandte Werkzeuge
Alle Werkzeuge anzeigen →Unix-Zeitstempel- & Epoch-Konverter — Multi-Präzision
Datum & Uhrzeit
Unix-Zeitstempel sofort in Daten umwandeln mit unserem kostenlosen Epoch-Konverter. Erkennt automatisch Sekunden, Millisekunden & Mikrosekunden. Live-Uhr, bidirektional. Ohne Anmeldung, 100 % privat.
Zahlensystem-Konverter — Binär, Hex, Dezimal & Oktal
Konvertierungswerkzeuge
Zahlen zwischen Binär, Hexadezimal, Dezimal, Oktal und beliebigen Basen (2–36) sofort konvertieren. Kostenlos, privat, ohne Anmeldung — alles läuft in Ihrem Browser.
Base64-Dekodierer & -Kodierer
Kodierung & Formatierung
Base64 online kostenlos dekodieren und kodieren. Echtzeitkonvertierung mit voller UTF-8- und Emoji-Unterstützung. 100 % privat — läuft in Ihrem Browser. Keine Anmeldung nötig.
CSV-zu-JSON-Konverter
Kodierung & Formatierung
CSV im Browser nach JSON konvertieren. RFC 4180, Typinferenz, Kopfzeile, Big-Int-sicher. 100 % privat, kein Upload.
Bilder Online Komprimieren — JPEG, PNG & WebP
Konvertierungswerkzeuge
Bildgröße um bis zu 80 % reduzieren — JPEG, PNG & WebP im Browser komprimieren, kein Upload nötig. Stapelverarbeitung für 20 Bilder, Qualität anpassen, Vorher-Nachher vergleichen. Kostenlos & privat.
JSON Diff Vergleich
Kodierung & Formatierung
Zwei JSON-Dateien direkt im Browser vergleichen. Nebeneinander-Hervorhebung, RFC 6902 JSON Patch-Ausgabe, störende Felder wie Zeitstempel und IDs ignorieren. 100 % privat, kein Upload.