Cron-Ausdruck-Generator
Erstellen Sie einen Crontab-Zeitplan über Auswahlfelder — Minute, Stunde, Tag, Monat, Wochentag — mit Klartext-Beschreibung und gängigen Vorlagen.
1.011 Aufrufe
Wie es funktioniert
Ein Cron-Ausdruck plant einen wiederkehrenden Job mit fünf durch Leerzeichen getrennten Feldern, immer in derselben Reihenfolge: Minute · Stunde · Tag des Monats · Monat · Wochentag. Jedes Feld akzeptiert einen Wert oder eines von vier Sonderzeichen: * bedeutet "jeder mögliche Wert"; */15 bedeutet "alle 15 Einheiten, beginnend beim Feldminimum"; 1,15,30 ist eine explizite Liste; 1-5 ist ein einschließender Bereich. Von links nach rechts gelesen bedeutet 0 9 * * 1-5 "bei Minute 0 der Stunde 9, an jedem Tag des Monats, in jedem Monat, an den Wochentagen 1 bis 5" — also 9:00 Uhr von Montag bis Freitag. */10 * * * * feuert rund um die Uhr alle 10 Minuten, und 0 0 1 * * feuert um Mitternacht am 1. jedes Monats.
Stellen Sie einen Zeitplan über die Auswahlfelder zusammen, und dieses Tool setzt die fünf Felder zusammen und übersetzt das Ergebnis anschließend in einen Klartextsatz, sodass Sie ihn vor dem Einfügen in eine Crontab-Datei oder einen Cloud-Scheduler auf Plausibilität prüfen können. Gängige Vorlagen — jede Minute, stündlich, täglich zu einer bestimmten Zeit, nur werktags — sind für die am häufigsten benötigten Zeitpläne nur einen Klick entfernt.
Was Sie wissen sollten
Die mit Abstand größte Überraschung in der Cron-Semantik: Wenn sowohl Tag des Monats als auch Wochentag eingeschränkt sind (keines von beiden bleibt *), werden die beiden mit ODER verknüpft, nicht mit UND. 0 0 15 * 5 bedeutet also nicht "der 15., falls er ein Freitag ist" — es bedeutet "der 15. des Monats ODER jeder Freitag", was weit häufiger feuert, als die meisten beabsichtigen. Wenn nur eines der beiden Felder relevant ist, lassen Sie das andere auf *.
Auch die Nummerierung der Wochentage kann überraschen: In den meisten Cron-Implementierungen bedeuten sowohl 0 als auch 7 Sonntag, Montag ist 1. Und entscheidend: Cron läuft immer in der konfigurierten Zeitzone des Servers — bei Cloud-Infrastruktur üblicherweise UTC — nicht in der lokalen Zeitzone der Person, die den Zeitplan eingerichtet hat, sodass ein für "9 Uhr" geplanter Job zu einer anderen lokalen Uhrzeit als erwartet feuern kann, bis die Zeitzone des Hosts bestätigt ist. Cloud-Scheduler wie das schedule: von GitHub Actions, AWS EventBridge und Kubernetes CronJob verwenden alle dieselbe Fünf-Felder-Syntax als Grundlage, manchmal mit herstellerspezifischen Erweiterungen (ein optionales Sekundenfeld, eine Kurzschreibweise für benannte Tage), sodass ein hier erstellter Zeitplan mit minimaler Anpassung direkt auf diese Plattformen übertragbar ist.
Häufig gestellte Fragen
Wie führe ich etwas alle 30 Sekunden aus?
Die kleinste Einheit des klassischen Cron ist eine Minute. Der übliche Workaround sind zwei Einträge: einer normal, einer mit `sleep 30 &&` vor dem Befehl — oder verwenden Sie systemd-Timer, die Sekunden unterstützen.
Warum lief mein 9:00-Job zu einer merkwürdigen Uhrzeit?
Fast immer die Zeitzone: Crontab läuft in der lokalen Zeit des Servers (in der Cloud oft UTC). Mit `date` auf dem Host prüfen oder, falls unterstützt, CRON_TZ setzen.
Wie teste ich einen Ausdruck sicher?
Verknüpfen Sie ihn zunächst mit einem Logging-Befehl: `* * * * * date >> /tmp/cron-test.log`, bestätigen Sie den Rhythmus, und setzen Sie dann den echten Befehl ein. Prüfen Sie auch, ob der Crontab-Benutzer den nötigen PATH hat — die Cron-Umgebung ist minimal.
Was passiert, wenn Tag des Monats und Wochentag beide gesetzt sind?
Sie werden mit ODER verknüpft, nicht mit UND — ein Zeitplan wie `0 0 15 * 5` läuft am 15. des Monats UND an jedem Freitag, nicht nur an einem Freitag, der zufällig auf den 15. fällt. Cron allein kann eine Schnittmenge beider Bedingungen nicht ausdrücken; diese Prüfung muss im Job selbst erfolgen.
Berücksichtigt Cron die Sommerzeitumstellung?
Das hängt von der Implementierung ab, aber klassisches Cron folgt in der Regel der lokalen Zeit der Systemuhr einschließlich DST-Verschiebungen — das bedeutet, ein Job, der während der Stunde der Umstellung ("vor" oder "zurück") geplant ist, kann an diesem Tag null- oder zweimal laufen. Auf UTC eingestellte Server vermeiden das vollständig, was ein weiterer Grund ist, warum die meisten Produktions-Scheduler standardmäßig UTC verwenden.
Kann ich in demselben Feld einen Bereich und einen Schritt kombinieren, etwa für jeden zweiten Werktag?
Ja — ein Schritt lässt sich auch auf einen Bereich anwenden, nicht nur auf einen Platzhalter: `1-5/2` im Wochentag-Feld bedeutet "jeden zweiten Tag innerhalb von Montag bis Freitag", also Montag, Mittwoch, Freitag. Diese kombinierte Bereichs-/Schritt-Form wird von den meisten modernen Cron-Implementierungen unterstützt (einschließlich Vixie-Cron und systemd), jedoch nicht von den ältesten POSIX-Varianten — testen Sie sie daher einmal, bevor Sie sich in einer Legacy-Umgebung darauf verlassen.
Ähnliche Tools
Problem melden
Cron-Ausdruck-Generator
Kommentare
Noch keine Kommentare — schreiben Sie den ersten!