araç köşesi

Cron-Ausdruck übersetzen: Crontab-Zeile in einen lesbaren Satz

Sehen Sie, wann ein Cron-Ausdruck läuft: als deutscher Satz, Feld für Feld aufgeschlüsselt und mit den nächsten Ausführungszeiten

Ihre Daten bleiben bei Ihnen. Die Umwandlung läuft im Browser; nichts wird an einen Server gesendet.

So funktioniert es

Cron ist der Zeitplaner, der auf einem Server eine Aufgabe zu festgelegten Zeiten von selbst startet; die Seite „Cronjobs“ im Hosting-Panel (cPanel, Plesk, Confixx) erwartet genau denselben Ausdruck. Ein Standard-Ausdruck hat fünf Felder: Minute, Stunde, Tag im Monat, Monat und Wochentag. Fügen Sie einen selbst geschriebenen oder aus einer Anleitung kopierten Ausdruck links ein; rechts steht als Satz, wann er läuft. So wird „*/15 9-17 * * 1-5“ zu „Alle 15 Minuten, zwischen 09:00 und 17:59 Uhr, Montag bis Freitag“, gefolgt von den ersten kommenden Terminen (13:15, 13:30 …). Ein Befehl am Zeilenende (etwa /home/benutzer/sicherung.sh) wird gesondert angezeigt; Kommentarzeilen mit # und Einstellungen wie MAILTO= werden übersprungen, Sie können also die komplette Ausgabe von crontab -l einfügen. Die nächsten Termine beruhen auf der Uhr Ihres Geräts. Viele Server laufen auf UTC; Deutschland liegt bei UTC+1 (Sommerzeit UTC+2), ein „0 9 * * *“ auf einem UTC-Server läuft daher um 10 oder 11 Uhr deutscher Zeit.

Dieses Werkzeug ist auch als cron ausdruck generator, crontab generator, cron ausdruck erklaeren, cron job alle 5 minuten, quartz cron ausdruck bekannt.

Was ist Cron?

Cron ist der Hintergrunddienst auf Linux- und Unix-Servern, der eine Aufgabe zur vorher festgelegten Minute startet, ohne dass jemand eingreift. Er übernimmt wiederkehrende Arbeiten wie Datensicherungen, das Leeren einer E-Mail-Warteschlange oder den täglichen Bericht einer Website. Die Seite „Cronjobs“ im Hosting-Panel ist nur ein Formular, das diesem Dienst Zeilen hinzufügt.

Was ist Crontab?

Die crontab (cron table) ist die Textdatei mit den geplanten Aufgaben eines Benutzers; bearbeitet wird sie mit crontab -e, aufgelistet mit crontab -l. Jede Zeile enthält fünf Zeitfelder und danach den auszuführenden Befehl. Zeilen mit # sind Kommentare, Zeilen wie MAILTO= enthalten Einstellungen, etwa an wen die Ausgabe per E-Mail geht.

Was ist der Unterschied zwischen Linux-cron und Quartz-cron?

Linux-cron hat fünf Felder und arbeitet minutengenau; Quartz (und Spring in Java) stellt ein Sekundenfeld voran, damit sind Zeitpläne wie „alle 10 Sekunden“ möglich. Quartz kennt außerdem ein optionales Jahresfeld, L für den letzten Tag des Monats, W für den nächstgelegenen Werktag und # für „den 2. Montag im Monat“. Am häufigsten führt die Wochentagsnummer zu Fehlern: In Quartz ist 1 Sonntag, in Linux ist 1 Montag.

Tag im Monat und Wochentag zusammen: die ODER-Regel von cron

„0 0 1,15 * 1“ lesen die meisten als „am 1. und 15., wenn es ein Montag ist“. So arbeitet Linux-cron nicht: Sind Tag im Monat und Wochentag beide eingeschränkt, läuft der Job, sobald EINES von beiden passt. Diese Zeile läuft also um Mitternacht am 1., am 15. und zusätzlich an jedem Montag. Das Werkzeug schreibt in diesem Fall „oder“ in den Satz und fügt einen Hinweis hinzu.

Dazu kommt eine Ausnahme: Beginnt ein Feld mit einem Stern (etwa „*/2“), gilt es für cron als nicht eingeschränkt, und dann müssen beide Felder zusammen passen. „0 0 */2 * 1“ bedeutet deshalb „ungerade Tage, die auf einen Montag fallen“. Manche JavaScript-Bibliotheken lassen dieses Detail weg; diese Seite folgt dem cron-Dienst, der unter Linux tatsächlich läuft (cronie, Vixie cron). In Spring ist es umgekehrt: Beide Felder müssen immer passen.

Linux, Spring oder Quartz: welche Schreibweise nutzen Sie?

Die Cronjob-Seite Ihres Hosting-Panels, die crontab auf einem Linux-Server, Kubernetes-CronJobs und GitHub Actions verwenden die Linux-Schreibweise mit fünf Feldern. In Java stellt Springs @Scheduled ein Sekundenfeld voran und erwartet sechs Felder. Quartz beginnt ebenfalls mit Sekunden, kennt ein optionales siebtes Jahresfeld, verlangt bei Tag im Monat oder Wochentag ein „?“ und zählt die Wochentage ab 1: In Quartz ist 1 Sonntag und 2 Montag, in Linux und Spring ist 1 Montag.

Die automatische Erkennung achtet auf Feldanzahl und Zeichen: „?“, „L“, „W“ oder „#“ bedeutet Quartz, sechs Felder Spring, fünf Felder Linux. Die gewählte Schreibweise steht in der Ausgabe. Da das letzte Wort einer Linux-Zeile mit sechs Wörtern ein Befehl sein kann („0 5 * * * sicherung.sh“), wählen Sie die Schreibweise im Zweifel von Hand; eine Wochentagsnummer in der falschen Schreibweise verschiebt sich um einen Tag.

Häufige Cron-Ausdrücke

Diese Zeilen decken die meistgesuchten Zeitpläne ab; kopieren Sie eine ins linke Feld, um die nächsten Termine zu sehen, und passen Sie sie dann an Ihre Uhrzeit an.

  • */5 * * * * — alle 5 Minuten
  • 0 * * * * — jede volle Stunde
  • 0 3 * * * — jede Nacht um 03:00 Uhr
  • 30 8 * * 1-5 — werktags (Mo–Fr) um 08:30 Uhr
  • 0 9 * * 1 — jeden Montag um 09:00 Uhr
  • 0 0 1 * * — am 1. jedes Monats um Mitternacht (@monthly)
  • 0 0 1 1 * — jedes Jahr am 1. Januar um Mitternacht (@yearly)

Häufige Fragen

Wie liest man einen Cron-Ausdruck?

Von links nach rechts stehen fünf Felder: Minute (0-59), Stunde (0-23), Tag im Monat (1-31), Monat (1-12) und Wochentag (0-7; 0 und 7 sind Sonntag). Der Stern bedeutet „jeder Wert“, das Komma eine Liste (1,15), der Bindestrich einen Bereich (9-17), der Schrägstrich eine Schrittweite (*/15 = alle 15). „30 2 * * *“ heißt: jeden Tag um 02:30 Uhr.

Wie schreibe ich einen Cronjob, der alle 5 Minuten läuft?

Schreiben Sie „*/5 * * * *“. Das */5 im Minutenfeld startet zu den Minuten 0, 5, 10 … 55. Soll der Job nur zu Bürozeiten laufen, schränken Sie zusätzlich die Stunde ein: „*/5 9-18 * * *“.

Warum läuft mein Cronjob nicht zur eingestellten Uhrzeit?

Meist liegt es an der Zeitzone: Läuft der Server auf UTC, startet „0 9 * * *“ im Winter um 10 Uhr und im Sommer um 11 Uhr deutscher Zeit. Prüfen Sie die Serveruhr mit dem Befehl date oder verschieben Sie den Ausdruck um die Differenz. Der zweithäufigste Grund: Tag im Monat und Wochentag sind beide gesetzt, und cron lässt dann einen von beiden genügen.

Was bedeuten @daily und @reboot in der crontab?

@daily (oder @midnight) entspricht „0 0 * * *“: jeden Tag um Mitternacht. @hourly, @weekly, @monthly und @yearly sind ähnliche Kurzformen. @reboot hängt nicht am Kalender: Es läuft einmal bei jedem Start des Servers bzw. des cron-Dienstes, daher lässt sich keine nächste Ausführung berechnen.