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.
Einen systemd-Zeitgeber wieder in einen cron-Ausdruck überführen
Dieses Werkzeug wandelt das `OnCalendar=` eines systemd-Zeitgebers zurück in einen cron-Ausdruck aus Minute, Stunde, Tag des Monats, Monat und Wochentag. Auch benannte Abkürzungen wie `daily` und `weekly` werden berücksichtigt. Es ist die Umkehrung seines Schwesterwerkzeugs.
**Aufmerksamkeit verdient in dieser Richtung, dass ein Teil dessen, was systemd ausdrücken kann, in cron keine Entsprechung hat.** `OnCalendar=` erlaubt **Angaben bis auf die Sekunde** und **Datumsbereiche** wie `*-*-01..07`, und beides passt nicht in die fünf Felder von cron. Ebenso wenig hat cron ein Gegenstück zu `Persistent=`, das die während eines Stillstands versäumten Läufe nachholt. **Der andere Punkt ist die Bedeutung von Tag des Monats und Wochentag: systemd behandelt beide als Und, während cron sie als Oder liest.** Eine unmittelbare Übertragung verschiebt den Zeitplan mithin dahin, öfter zu laufen, und das Werkzeug warnt Sie, wo dies zutrifft.
So wandeln Sie um
- Geben Sie den Wert von OnCalendar= ein Eine Form wie `Mon *-*-* 06:00:00` genügt, ebenso ein Name wie `daily`.
- Sehen Sie den erzeugten cron-Ausdruck durch Sie erhalten das auf die fünf Felder übertragene Ergebnis.
- Lesen Sie die Warnungen **Benannt werden sowohl Angaben, die cron nicht ausdrücken kann, als auch die Bedeutungsunterschiede.**
- Übertragen Sie ihn in eine crontab Setzen Sie den auszuführenden Befehl dahinter, und die Zeile ist eintragsfertig.
Tipps für die Nutzung
- 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.
Wofür Sie es nutzen können
Um in eine Umgebung ohne systemd zu wechseln
**Container und ältere unixartige Systeme bieten mitunter nichts als cron.**
Um einen bestehenden Zeitgeber zu entziffern
Auch ohne Vertrautheit mit der `OnCalendar=`-Schreibweise wird die Häufigkeit klar, sobald man sie in einen cron-Ausdruck überführt.
Um in zwei Umgebungen denselben Zeitplan zu halten
**Wo der Wirkbetrieb systemd und die Entwicklung cron verwendet, lassen sich beide Konfigurationen gegeneinanderhalten.**
Um Ihre Zeitpläne zu sichten
Sie gemeinsam umzuwandeln gibt Ihnen Gelegenheit zu prüfen, ob die Abstände die gemeinten sind.
Begriffe zu Zeitplanern
- OnCalendar=
- Der Schlüssel, der die Zeit in einem systemd-Zeitgeber angibt. **Wochentag, Datum und Uhrzeit passen in eine einzige Zeile.**
- Cron-Ausdruck
- Die Schreibweise, die eine Zeit durch fünf Felder ausdrückt: Minute, Stunde, Tag des Monats, Monat und Wochentag. **Sekunden lassen sich darin nicht angeben.**
- Benannte Abkürzung
- Ein anderer Name für einen gängigen Abstand, etwa `daily`, `weekly` oder `monthly`.
- Bedeutungsunterschied
- **Sind Tag des Monats und Wochentag beide angegeben, liest systemd sie als Und und cron als Oder.**
- Persistent=
- Die Einstellung, die während eines Stillstands versäumte Läufe nachholt. **Cron hat dafür kein unmittelbares Gegenstück.**
- Crontab
- Die Datei, in der der Zeitplan von cron steht, oder der Befehl, der sie bearbeitet.
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.