Nächste Ausführungen

Scheduler unterscheiden sich bei Details wie Monatstag vs. Wochentag und Sommerzeit. Teste den Zeitplan in deinem System, bevor du dich in Produktion darauf verlässt.

*/5 * * * * läuft zu :00, :05, :10 bis :55, also 12-mal pro Stunde und 288-mal am Tag. Kürzer erlaubt GitHub Actions nicht. Mit 2-59/5 * * * * verschieben, damit er nicht mit Jobs zu runden Minuten kollidiert.

Anleitung

  1. Cron-Ausdruck eingeben oder einfügen, oder eine Vorlage antippen. Das Format richtet sich nach der Feldanzahl: 5 ist Unix-Crontab, 6 ist Spring (Sekunden zuerst), 7 oder ein ? ist Quartz.
  2. Beschreibung in Klartext und die nächsten 10 Ausführungen lesen. Zeitzone wählen, um zu sehen, wann es dort läuft; eine Zeit antippen kopiert sie als ISO 8601.
  3. Mit dem Editor ein Feld nach dem anderen ändern: jeder Wert, Intervall, bestimmte Werte oder Bereich.
  4. Beim Wechsel zwischen Unix, Quartz und Spring wird der Ausdruck nach Möglichkeit umgewandelt.
  • Unix-Cron: Sind Monatstag und Wochentag beide eingeschränkt, läuft der Job, wenn einer davon passt (ODER). Quartz verlangt ? in einem der beiden; Spring verlangt, dass beide passen.
  • Unix-Wochentage sind 0–7 (0 und 7 = Sonntag); Quartz nutzt 1–7 mit 1 = Sonntag. Namen wie MON-FRI funktionieren überall.
  • Quartz und Spring kennen außerdem L (letzter Tag), W (nächster Werktag), 5L (letzter Freitag) und 2#1 (erster Montag).
  • Zeiten in der Lücke der Sommerzeitumstellung werden übersprungen; Cron-Dienste handhaben das unterschiedlich.

Die fünf Unix-Felder

Eine normale Crontab-Zeile hat fünf Felder: Minute (0–59), Stunde (0–23), Tag des Monats (1–31), Monat (1–12 oder JAN–DEC) und Wochentag (0–7, 0 und 7 sind Sonntag, oder SUN–SAT). * steht für jeden Wert, das Komma zählt auf (1,15), der Bindestrich bildet einen Bereich (9-17) und der Schrägstrich eine Schrittweite (*/15 heißt 0, 15, 30, 45).

30 2 * * 1-5 läuft also montags bis freitags um 02:30, 0 */6 * * * um 00:00, 06:00, 12:00 und 18:00. Kürzel wie @hourly, @daily, @weekly und @monthly stehen für 0 * * * *, 0 0 * * *, 0 0 * * 0 und 0 0 1 * *.

Unterschiede bei Quartz und Spring

Quartz setzt ein Sekundenfeld an den Anfang und optional ein Jahr ans Ende, zählt Wochentage 1–7 ab Sonntag und verlangt ? entweder im Monatstag oder im Wochentag. Spring @Scheduled nutzt sechs Felder (Sekunde zuerst) und Wochentage 0–7. Beide kennen L für den letzten Tag, W für den nächsten Werktag, 6L für den letzten Freitag und 2#1 für den ersten Montag im Monat.

Stolperfallen

Sind in Unix-Cron Monatstag und Wochentag beide eingeschränkt, läuft der Job, sobald eines davon passt: 0 0 13 * 5 startet an jedem 13. und an jedem Freitag, nicht nur an Freitag, dem 13. Cron-Daemons nutzen die Zeitzone des Servers, sofern nichts anderes eingestellt ist, und GitHub Actions rechnet immer in UTC. Bei der Zeitumstellung kann ein Job um 02:30 je nach Implementierung ausfallen oder doppelt laufen; für wichtige Jobs daher besser UTC verwenden.

Häufige Fragen

Was bedeutet * * * * *?

Der Job läuft jede Minute jeder Stunde an jedem Tag, also 1.440-mal täglich. Jedes * steht für alle Werte seines Feldes, in der Reihenfolge Minute, Stunde, Monatstag, Monat, Wochentag.

Wie lasse ich einen Cronjob alle 5 Minuten laufen?

Mit */5 * * * *. Er startet zu Minute 0, 5, 10 und so weiter bis 55, insgesamt 288-mal am Tag. Für einen anderen Startpunkt etwa 2-59/5 * * * * schreiben.

Welche Zeitzone nutzt Cron?

Klassisches Cron nutzt die lokale Zeitzone des Servers. Manche Systeme kennen CRON_TZ oder eine timeZone-Einstellung, Kubernetes-CronJobs haben ein Feld timeZone, und GitHub Actions nutzt immer UTC. Wähle hier die Zone, um die passenden Zeiten zu sehen.

Was unterscheidet Unix-Cron von Quartz-Cron?

Unix-Cron hat 5 Felder und beginnt mit der Minute. Quartz hat 6 oder 7, beginnt mit Sekunden und endet optional mit dem Jahr, zählt Sonntag als 1 und braucht ? in einem der beiden Tagesfelder.

Wie plane ich einen Job am letzten Tag des Monats?

Quartz und Spring kennen L im Monatstag: 0 0 0 L * ? in Quartz. Standard-Unix-Cron hat kein L; üblich ist, an den Tagen 28 bis 31 zu starten und im Skript zu prüfen, ob morgen der 1. ist.

Warum lief mein Cronjob nicht zur erwarteten Zeit?

Prüfe die Zeitzone des Servers, ob Monatstag und Wochentag versehentlich kombiniert sind und ob der Befehl in der minimalen Cron-Umgebung funktioniert, in der PATH und Variablen anders sind als in deiner Shell.

Oft zusammen genutzt

Anleitung

Schritte

  1. Cron-Ausdruck eingeben oder einfügen, oder eine Vorlage antippen. Das Format richtet sich nach der Feldanzahl: 5 ist Unix-Crontab, 6 ist Spring (Sekunden zuerst), 7 oder ein ? ist Quartz.
  2. Beschreibung in Klartext und die nächsten 10 Ausführungen lesen. Zeitzone wählen, um zu sehen, wann es dort läuft; eine Zeit antippen kopiert sie als ISO 8601.
  3. Mit dem Editor ein Feld nach dem anderen ändern: jeder Wert, Intervall, bestimmte Werte oder Bereich.
  4. Beim Wechsel zwischen Unix, Quartz und Spring wird der Ausdruck nach Möglichkeit umgewandelt.

Tastenkürzel

Strg + EnterAusdruck kopierenEnterSofort aktualisieren

Gut zu wissen

Läuft in deinem Browser. Dateien und Texte verlassen nie dein Gerät.