Cron-Ausdrücke
Du fügst „15 3 * * 1-5“ ein und erfährst in klaren Worten, was das bedeutet, mit den nächsten Ausführungen Tag für Tag in der Zeitzone deiner Wahl. Oder umgekehrt: Stell den Zeitplan über die Menüs zusammen und nimm den Ausdruck mit.
Du hast keinen? Stell ihn hier zusammen
Welchen Dialekt diese Seite liest
Cron ist nicht gleich Cron, und das sollte man als Erstes wissen: Hier lesen wir die klassische Crontab mit fünf Feldern (Minute, Stunde, Tag des Monats, Monat, Wochentag), dazu die Form mit sechs Feldern und den Sekunden ganz vorne, wie Spring und node-cron sie schreiben, sowie die Kurzformen @yearly, @monthly, @weekly, @daily, @midnight und @hourly. Den Sonntag kann man als 0 oder 7 schreiben, und die englischen Kürzel aus drei Buchstaben (MON, FRI, JAN, DEC) funktionieren problemlos.
Was nicht zu diesem Dialekt gehört, wird mit Begründung abgelehnt, statt halb gelesen zu werden: die Quartz-Zeichen (das Fragezeichen, das L für den letzten Tag, das W für den nächstgelegenen Werktag, die Raute für den dritten Sonntag), die sieben Quartz-Felder mit dem Jahr am Ende und @reboot, das keine Uhrzeit, sondern ein Ereignis ist und daher keinen nächsten Lauf hat, den man berechnen könnte. Dasselbe gilt für einen rückwärts geschriebenen Bereich wie 5-1: Jeder liest ihn auf seine Weise, und eine Antwort zu geben wäre schlimmer, als es offen zu sagen. Geht es heute eher um Netzwerke als um Zeitpläne, hilft dir der Subnetzrechner.
Tag des Monats und Wochentag werden mit ODER verknüpft
Das ist die Falle, die von allen die meisten Stunden kostet, und sie sieht aus wie ein Detail: Wenn beide Tagesfelder ausgefüllt sind, verknüpft die klassische Crontab sie nicht mit UND, sondern mit ODER. Das heißt, „0 0 13 * 5“ bedeutet nicht „am Dreizehnten des Monats, wenn er ein Freitag ist“, sondern am Dreizehnten des Monats und zusätzlich an jedem Freitag. Wer einen Lauf im Monat erwartet hat, bekommt fünf oder sechs.
Die Regel gilt nur, wenn beide eingeschränkt sind. Ist eines der beiden ein Stern, bestimmt das andere allein, und das ist der Normalfall. Deshalb ist die Liste oben der Teil, der wirklich zählt: Du liest die Daten einzeln und merkst sofort, wenn sie dichter kommen, als du dachtest. Sind beide Felder ausgefüllt, sagt die Seite es in Worten, damit es niemand zufällig herausfindet.
Warum „*/7“ nicht „alle sieben Minuten“ bedeutet
Der Schritt zählt nicht die vergehenden Minuten: Er beginnt jede Stunde wieder bei null. Mit „*/7“ fallen die Läufe auf die Minuten 0, 7, 14, 21, 28, 35, 42, 49 und 56, und dann geht es zurück zu Minute 0 der nächsten Stunde: Zwischen 00:56 und 01:00 vergehen vier Minuten, nicht sieben. Auf einer Maschine, die schwere Arbeit erledigt, staut sich genau bei diesen zwei dicht aufeinanderfolgenden Starts alles.
Die Rechnung geht auf, wenn der Schritt sechzig teilt, also bei 2, 3, 4, 5, 6, 10, 12, 15, 20 und 30: Nur in diesen Fällen ist „alle N Minuten“ eine wahre Beschreibung. Bei den Stunden gilt dieselbe Überlegung mit vierundzwanzig, also ist „*/13“ nicht „alle dreizehn Stunden“, sondern die Stunden 0 und 13, mit elf leeren Stunden dazwischen. Deshalb listet der Satz oben die echten Minuten auf, statt den Schritt zu wiederholen: Die bequeme Beschreibung ist die, mit der du danebenliegst.
Sommerzeit, und warum jedes Datum noch einmal geprüft wird
Die Zeitumstellung ist der Punkt, an dem sich sogar echte Crons widersprechen, deshalb ist die Regel dieser Seite ausgeschrieben statt stillschweigend: Wir rechnen in Ortszeit, also nach der Uhr an der Wand, und wenn es diese Stunde in jener Nacht nicht gibt, weil die Zeiger vorspringen, wird der Lauf übersprungen und du erfährst es; gibt es sie dagegen zweimal, weil die Uhr zurückgestellt wird, wird sie nur einmal gezählt, beim ersten Mal. Ein echter Cron könnte in derselben Nacht den übersprungenen Lauf nachholen oder zwei auslösen.
Aus demselben Grund wird jedes erzeugte Datum zurückgelesen: Vom Zeitpunkt aus gehen wir zurück zur Ortszeit in der gewählten Zone und prüfen sie Feld für Feld mit einem zweiten Stück Code, das absichtlich ein zweites Mal geschrieben wurde. Geht die Prüfung nicht auf, wird nichts ausgegeben, denn ein falsches Datum, das mit Überzeugung genannt wird, ist schlimmer als gar keins. Und wenn du nur wissen willst, wie spät es gerade woanders auf der Welt ist, ist der kurze Weg die Weltuhr.