systemd-Timer-zu-Cron-Ausdruck-Konverter
Konvertieren Sie die OnCalendar=-Syntax eines systemd-Timers kostenlos in einen Cron-Ausdruck (Minute Stunde Tag Monat Wochentag). Das Gegenstück zu unserem Konverter "Cron zu systemd-Timer". Unterstützt benannte Kurzformen (daily, weekly usw.) und warnt vor semantischen Unterschieden, wenn Tag des Monats und Wochentag gleichzeitig angegeben werden.
Zuordnung von systemd-Komponenten zu Cron-Feldern
Jeder Teil der OnCalendar=-Syntax von systemd entspricht einem der fünf Cron-Felder wie folgt.
| Position | Position in systemd | Cron-Feld |
|---|---|---|
| 1 | Minute im Zeitteil (MM in HH:MM:SS) | Minute |
| 2 | Stunde im Zeitteil (HH in HH:MM:SS) | Stunde |
| 3 | Tag im Datumsteil (Tag in Jahr-Monat-Tag) | Tag des Monats |
| 4 | Monat im Datumsteil (Monat in Jahr-Monat-Tag) | Monat |
| 5 | Wochentag-Präfix (z. B. Mon, Mon..Fri) | Wochentag |
Das Sekundenfeld von systemd (SS in HH:MM:SS) hat kein Cron-Äquivalent und wird bei der Konvertierung ignoriert (eine Warnung erscheint, wenn die Sekunden nicht "00" sind).
Zuordnung von systemd-Wochentagskürzeln zu Cron-Wochentagsnummern
systemd verwendet englische Wochentagskürzel, während Cron Zahlen von 0 bis 6 verwendet.
| systemd-Wochentagskürzel | Cron-Wochentagsnummer |
|---|---|
| Sun | 0 |
| Mon | 1 |
| Tue | 2 |
| Wed | 3 |
| Thu | 4 |
| Fri | 5 |
| Sat | 6 |
Zuordnung von systemd-Kurzformen zu Cron-Ausdrücken
systemd hat lesbare benannte Kurzformen wie "daily" und "weekly", und dieses Tool kann auch diese in Cron-Ausdrücke umwandeln.
| OnCalendar= | Cron-Ausdruck |
|---|---|
| minutely | * * * * * |
| hourly | 0 * * * * |
| daily / midnight | 0 0 * * * |
| weekly | 0 0 * * 1 |
| monthly | 0 0 1 * * |
| yearly / annually | 0 0 1 1 * |
Häufige Konvertierungsbeispiele
| OnCalendar= | Cron-Ausdruck | Bedeutung |
|---|---|---|
| *-*-* *:*:00 | * * * * * | Läuft jede Minute (entspricht "* * * * *" in Cron). |
| *:00/15:00 | */15 * * * * | Läuft alle 15 Minuten. |
| Mon..Fri 09:00:00 | 0 9 * * 1-5 | Läuft um 9:00 Uhr an Werktagen (Montag bis Freitag). |
| *-*-01 00:00:00 | 0 0 1 * * | Läuft um Mitternacht am 1. jeden Monats. |
| *-01-01 00:00:00 | 0 0 1 1 * | Läuft um Mitternacht am 1. Januar jedes Jahr. |
| Mon *-*-01 00:00:00 | 0 0 1 * 1 | Ein Beispiel mit sowohl einem Tag des Monats (dem 1.) als auch einem Wochentag (Montag). systemd behandelt dies als UND-Bedingung (läuft nur, wenn beide zutreffen), aber Cron interpretiert es als ODER-Bedingung (läuft, wenn eines von beiden zutrifft) — das konvertierte Ergebnis läuft also häufiger als im ursprünglichen OnCalendar-Ausdruck beabsichtigt. |
Ein OnCalendar-Ausdruck, der sowohl Tag des Monats als auch Wochentag auf etwas anderes als "*" einschränkt, kann nicht präzise in Cron umgewandelt werden (systemd verwendet UND-Logik, Cron verwendet ODER-Logik). Prüfen Sie in solchen Fällen immer die Bedeutung des Konvertierungsergebnisses.
Tipps zur Verwendung
- Sie können benannte Kurzformen wie "daily", "weekly" oder "monthly" direkt eingeben — sie werden intern in den entsprechenden Cron-Ausdruck umgewandelt (z. B. wird "daily" zu "0 0 * * *").
- Die Einschränkung von sowohl Tag des Monats als auch Wochentag auf etwas anderes als "*" ändert die Bedeutung bei der Umwandlung der UND-Logik von systemd in die ODER-Logik von Cron. Prüfen Sie in diesem Fall die Warnung und bestätigen Sie, dass das Ergebnis Ihrer Absicht entspricht.
- Die Jahres- und Sekundenfelder von OnCalendar haben kein Cron-Äquivalent und werden bei der Konvertierung verworfen (eine Warnung benachrichtigt Sie, wenn dies geschieht).
- Nützlich bei der Migration von Arbeitslasten weg von systemd — zum Beispiel beim Verschieben eines geplanten Jobs zu einem Kubernetes CronJob (der Cron-ähnliche Syntax verwendet).
- Bei einfachen Zeitplänen, die Wochentag- und Datumseinschränkungen nicht kombinieren (stündlich, täglich, wöchentlich usw.), ist diese Konvertierung immer exakt.
Häufig gestellte Fragen
Übrigens – Was es bedeutet, einen systemd-Timer zurück zu Cron zu konvertieren
Technologiemigrationen werden meist als einseitig beschrieben — von einem alten zu einem neueren Mechanismus —, aber in der Praxis kommt die umgekehrte Konvertierung auch häufig vor. Eine Arbeitslast von einem systemd-basierten Host auf einen schlanken Container zu verschieben, der nur Cron unterstützt, oder auf ein Orchestrierungswerkzeug, das Cron-ähnliche Zeitplansyntax verwendet (wie Kubernetes CronJob), bedeutet, die OnCalendar-Syntax zurück in einen Cron-Ausdruck umzuwandeln.
Diese "umgekehrte Konvertierung" ist keine einfache Eins-zu-eins-Zuordnung, weil die OnCalendar-Syntax von systemd ausdrucksstärker ist als Cron. Sie unterstützt Konzepte, die die fünf Felder von Cron einfach nicht darstellen können — Einschränkungen auf Jahresebene, Sekundenpräzision und eine UND-artige Kombination von Datum und Wochentag. Deshalb zielt dieses Tool darauf ab, die häufig verwendeten Muster präzise zu konvertieren, und behandelt alles Komplexere als Konvertierungsfehler, anstatt eine Näherung zu raten.
Der semantische Unterschied, wenn sowohl Tag des Monats als auch Wochentag angegeben werden — UND-Logik bei systemd gegenüber ODER-Logik bei Cron — ist die größte Falle bei dieser umgekehrten Konvertierung. Eine Bedingung wie "der 1. des Monats" UND "Montag" schränkt systemd nur auf Tage ein, die sowohl der 1. als auch ein Montag sind, aber Cron würde stattdessen an jedem Tag laufen, der entweder der 1. oder ein Montag ist. Dieses Tool warnt explizit davor, damit diese leicht zu übersehende Bedeutungsverschiebung bei einer Migration nicht unbemerkt bleibt.