Zum Inhalt springen

Cron to systemd Converter · Scheduling

Verschieben Sie eine crontab-Zeile auf einen systemd-Timer.

Fügen Sie einen einzelnen crontab-Eintrag ein, um ein systemd-Paar aus .timer und .service mit einem OnCalendar=-Ausdruck und Migrationshinweisen zu erzeugen — kostenlos, online, ohne erforderliche Anmeldung.

Läuft in Ihrem Browser Keine Anmeldung Kostenlos & offen Aktualisiert am 28.07.2026

Cron to systemd Converter Playground

Base name for the generated .timer and .service units. Optional.
crontab

Tip: press Esc to release focus.

OnCalendar
timer.timer
service.service
Notes

Paste a crontab line, then convert to see the equivalent systemd .timer and .service units, plus any migration notes here.

Die Lücke

systemd ist die neue crontab.

Moderne Linux-Distributionen planen Jobs mit systemd-Timern, und viele liefern überhaupt keinen benutzereigenen cron-Daemon mehr aus. Timer bieten Ihnen journald-Logging, Abhängigkeitsreihenfolge, Ressourcenlimits, Wiederholungen und Persistent=true für verpasste Läufe — Dinge, die eine bloße crontab-Zeile nicht ausdrücken kann.

Doch die Syntax ist ungewohnt, und einen Zeitplan von Hand in OnCalendar= über zwei Unit-Dateien umzuschreiben, ist fummelig und leicht in feinen Details falsch zu machen. Dieser Converter erledigt den mechanischen Teil für Sie — fügen Sie eine crontab-Zeile ein, um sie in Sekunden zu systemd-Timer-Units zu migrieren — und benennt die wenigen Verhaltensweisen — Umgebung, MAILTO, Arbeitsverzeichnis —, die sich nicht eins zu eins übersetzen lassen, sodass die Migration ehrlich statt stillschweigend erfolgt.

Möchten Sie zuerst die cron-Seite lesen? Probieren Sie den Cron Expression Tester, und konvertieren Sie dann hier — oder springen Sie direkt zum Live-Playground oben.

Die Pipeline

So funktioniert es.

Fünf deterministische Schritte verwandeln eine crontab-Zeile in ein installierbares Paar von Units — jedes Mal vollständig in Ihrem Browser-Tab.

  1. Zeile parsen.

    Ihr crontab-Eintrag wird in die fünf Zeitfelder (oder ein @macro) und den darauffolgenden Befehl aufgeteilt.

  2. OnCalendar erstellen.

    Die Zeitfelder werden in einen systemd-OnCalendar=-Kalenderausdruck umgeschrieben, Listen und Schritte inbegriffen.

  3. Units ausgeben.

    Ein .timer, der den Zeitplan trägt, und ein .service, der Ihren Befehl umschließt, werden als zusammengehöriges Paar erzeugt.

  4. Lücken kennzeichnen.

    Alles, was cron tut und systemd anders handhabt — Umgebung, MAILTO, Arbeitsverzeichnis — erscheint als Hinweis.

  5. Kopieren & installieren.

    Legen Sie die beiden Units an Ort und Stelle, aktivieren und starten Sie dann den Timer. Die nächsten Läufe erscheinen in list-timers.

Die Abbildung

Eine Zeile rein, zwei Units raus.

Der Converter liest einen standardmäßigen crontab-Eintrag — fünf Zeitfelder plus einen Befehl oder ein @macro — und gibt einen systemd .timer gepaart mit einem .service aus.

Die crontab-Zeile

Die fünf Felder sind minute, hour, day-of-month, month und day-of-week, gefolgt vom Befehl. Listen (1,15), Bereiche (1-5), Schritte (*/10) und @macros werden alle verstanden.

crontab
# Run the nightly backup every day at 03:00
0 3 * * *  /usr/local/bin/backup.sh

Die .timer-Unit

Trägt den Zeitplan als OnCalendar=-Ausdruck. Persistent=true bedeutet, dass ein Lauf, der verpasst wurde, während die Maschine aus war, beim nächsten Boot ausgelöst wird — näher daran, wie Betreiber erwarten, dass sich ein Backup-Job verhält.

backup.timer
[Unit]
Description=Run backup.sh (migrated from crontab)

[Timer]
OnCalendar=*-*-* 03:00:00
Persistent=true

[Install]
WantedBy=timers.target

Die .service-Unit

Umschließt Ihren Befehl. Type=oneshot passt zu einem Job, der bis zum Abschluss läuft, und ExecStart= enthält den Befehl aus der crontab-Zeile. Fügen Sie hier bei Bedarf Environment= oder User= hinzu.

backup.service
[Unit]
Description=backup.sh (migrated from crontab)

[Service]
Type=oneshot
ExecStart=/usr/local/bin/backup.sh

Die Units installieren

Drei Befehle bis live.

Kopieren Sie beide Units, legen Sie sie in /etc/systemd/system/, laden Sie den Daemon neu, aktivieren und starten Sie dann den .timer — niemals den Service direkt. Der Timer plant den Lauf.

Nach der Aktivierung zeigt systemctl list-timers den nächsten Auslösezeitpunkt, und journalctl -u backup.service verfolgt die Ausgabe, die Ihnen das alte MAILTO per E-Mail geschickt hätte.

install.sh
# Drop the units in place, then enable the timer
$ sudo cp backup.timer backup.service /etc/systemd/system/
$ sudo systemctl daemon-reload
$ sudo systemctl enable --now backup.timer

# Confirm the next scheduled run
$ systemctl list-timers backup.timer

Bevor Sie umstellen

Ein Hinweis zur Parität: Die erzeugten Units decken den häufigen Fall ab — Zeitplan, Befehl und Behandlung verpasster Läufe. Einige cron-Verhaltensweisen haben kein direktes OnCalendar=-Äquivalent und erscheinen stattdessen als Migrationshinweise: zeilenweise Umgebungszuweisungen (verschieben nach Environment= / EnvironmentFile=), MAILTO E-Mail-bei-Ausgabe (verwenden Sie journald oder einen OnFailure=-Handler) und das implizite Arbeitsverzeichnis (setzen Sie WorkingDirectory=). Prüfen Sie die Hinweise, führen Sie den Timer dann zur Bestätigung einmal mit systemctl start aus, bevor Sie die ursprüngliche crontab-Zeile entfernen.

FAQ

Fragen, beantwortet.

Tippen Sie auf eine Frage, um die Antwort aufzuklappen.

Er nimmt eine einzelne crontab-Zeile — die fünf Zeitfelder plus den Befehl — und erzeugt ein äquivalentes systemd-Setup: eine .timer-Unit mit einem OnCalendar=-Ausdruck, der Ihren Zeitplan abbildet, und eine .service-Unit, die Ihren Befehl ausführt. Außerdem listet er Migrationshinweise auf, die alles kennzeichnen, was systemd anders handhabt, etwa das implizite Arbeitsverzeichnis oder die Umgebung. Alles wird in Ihrem Browser berechnet.

Nein. Der Converter läuft zu 100 % clientseitig. Ihre cron-Zeile und Ihr Befehl werden in Ihrem Browser-Tab geparst und übersetzt — nichts wird auf einen Server hochgeladen, und es gibt kein Konto und keine Anmeldung. Sie können bedenkenlos interne Befehle und Pfade einfügen.

Ein Satz von crontab-Feldern wird in die OnCalendar=-Kalendersyntax von systemd umgeschrieben — zum Beispiel wird aus „0 3 * * *“ der Ausdruck „*-*-* 03:00:00“ (täglich um 03:00). Listen, Bereiche und Schrittwerte werden auf ihre OnCalendar-Entsprechungen abgebildet, und gängige @macros wie @daily und @hourly werden auf ihre kanonischen Timer-Formen abgebildet. Nach der Installation des Timers können Sie die nächsten Läufe mit „systemctl list-timers“ bestätigen.

Timer bieten Ihnen strukturiertes Logging über das Journal (journalctl -u your.service), Abhängigkeitsreihenfolge, Ressourcenlimits, automatische Wiederholungen sowie genaue im Vergleich zu monotoner Planung, dazu Persistent=true, damit ein verpasster Lauf beim nächsten Boot ausgelöst werden kann. Sie sind die native Planungsprimitive auf modernen systemd-Linux-Distributionen, auf denen der benutzereigene crond oft nicht einmal installiert ist.

Einige cron-Verhaltensweisen haben kein direktes OnCalendar=-Äquivalent und erscheinen stattdessen als Migrationshinweise — nicht standardmäßige oder herstellerspezifische cron-Erweiterungen, MAILTO E-Mail-bei-Ausgabe (verwenden Sie journald oder einen OnFailure=-Handler) und zeilenweise Umgebungszuweisungen (verschieben Sie diese nach Environment= oder in eine EnvironmentFile= in der .service). Der Converter kennzeichnet diese, damit sich nichts stillschweigend in seiner Bedeutung ändert.

Nein. Dies ist ein unabhängiges Community-Dienstprogramm und steht in keiner Verbindung zum systemd-Projekt oder einer cron-Implementierung und wird von diesen nicht unterstützt. Es bildet die Standardformate von crontab und systemd-Units zur Wiedererkennung nach und benennt sie nur, um zu beschreiben, was es konvertiert.

@reboot hat kein OnCalendar=-Äquivalent und wird im [Timer]-Abschnitt auf OnBootSec=1min abgebildet, sodass der Job einmal kurz nach jedem Boot ausgelöst wird. @hourly expandiert zu OnCalendar=*-*-* *:00:00, @daily zu OnCalendar=*-*-* 00:00:00, @weekly zu OnCalendar=Sun *-*-* 00:00:00, @monthly zu OnCalendar=*-*-01 00:00:00 und @yearly zu OnCalendar=*-01-01 00:00:00. Der Converter behandelt all dies automatisch und weist auf den Sonderfall @reboot hin.

Fügen Sie dem [Timer]-Abschnitt neben Ihrer OnCalendar=-Zeile Persistent=true hinzu. systemd hält den Zeitpunkt der letzten Auslösung auf der Festplatte fest und führt den Job, falls der geplante Zeitpunkt verstrichen ist, während die Maschine aus war, beim nächsten Boot sofort aus. Der Converter nimmt Persistent=true immer in die erzeugte .timer-Unit auf, sodass dieses Verhalten standardmäßig aktiv ist.

Legen Sie für systemweite Jobs beide Units in /etc/systemd/system/ ab und führen Sie dann sudo systemctl daemon-reload und sudo systemctl enable --now yourjob.timer aus. Aktivieren Sie die .timer-Unit — nicht die .service direkt, da der Timer den Zeitplan steuert. Legen Sie sie für benutzereigene Jobs stattdessen in ~/.config/systemd/user/ ab und verwenden Sie systemctl --user enable --now yourjob.timer.

Führen Sie systemd-analyze calendar „<expression>“ aus, um die Syntax zu validieren und zu sehen, wann der Ausdruck das nächste Mal eintritt — zum Beispiel systemd-analyze calendar „*-*-* 03:00:00“. Sobald der Timer installiert ist, zeigt systemctl list-timers jeden aktiven Timer mit seinen letzten und nächsten Laufzeiten an, und journalctl -u yourjob.service streamt die Job-Ausgabe.

More free, private DevOps tools.

Der Cron to systemd Converter ist eines der Tools in OpsCanopy — ein wachsendes Schutzdach aus browserbasierten Validierern, Convertern und Testern, die niemals einen Server berühren.

29 kostenlose Tools, jedes einzelne offlinefähig — opscanopy.com funktioniert ohne Registrierung, und nichts wird hochgeladen.

Arbeiten Sie mit Zeitplänen? Kombinieren Sie dies mit dem Cron Expression Tester, um eine cron-Zeile zuerst in einfachem Deutsch zu lesen, oder durchstöbern Sie das vollständige Tools-Verzeichnis.

Nicht verbunden mit dem systemd-Projekt oder einer cron-Implementierung und nicht von diesen unterstützt. Formatnamen werden nur verwendet, um zu beschreiben, was dieses Tool konvertiert.