Zum Inhalt springen

Cron-Übersetzer:
was macht diese Zeile?

Fügen Sie eine Zeile direkt aus der crontab ein — nur die fünf Felder oder die ganze Zeile samt Befehl. Sie erhalten den Zeitplan als einen Satz in natürlicher Sprache, jedes Feld dekodiert und die nächsten zehn Termine, an denen der Job startet. Nichts wird irgendwohin gesendet: Die Auswertung läuft in Ihrem Browser.

Womit anfangen

Lesen Sie die Felder in dieser Reihenfolge

Geerbte crontab-Zeilen sind selten dokumentiert. Lesen Sie die fünf Felder in dieser Reihenfolge:

1 · Felder zählen

Fünf durch Leerzeichen getrennte Felder sind crontab. Sechs oder sieben bedeuten Quartz oder einen anderen Scheduler mit vorangestelltem Sekundenfeld — eine andere Sprache, die nur ähnlich aussieht. Alles nach dem fünften Feld ist der Befehl, nicht der Zeitplan.

5 = Cron · 6+ = kein Cron

2 · Die letzten zwei zuerst

Tag des Monats und Wochentag entscheiden, an welchen Tagen der Job läuft. Stehen in beiden Feldern Zahlen, werden Sie hellhörig: Cron startet, sobald eines von beiden passt — die ODER-Regel und der klassische Lesefehler.

beide gesetzt → ODER, nicht UND

3 · Dann die ersten zwei

Minute und Stunde sind die Uhrzeit an diesen Tagen. Ein Stern im Minutenfeld bedeutet 60 Läufe pro Stunde. Das Monatsfeld zählt nur, wenn dort kein Stern steht.

* in Minute = 60×/Stunde
Beispiel aus der Praxis

Was jede Zeile in dieser crontab tut

Die Ausgabe von crontab -l auf einem fremden Server, Zeile für Zeile übersetzt. Übersetzen Sie eine beliebige davon — die Schaltfläche lädt sie oben in den Übersetzer. Ganze Zeilen gehen auch: Fügen Sie eine samt Befehl in das Feld ganz oben ein, dann nimmt der Übersetzer den Zeitplan und benennt den Teil, den er ignoriert hat.

# m h dom mon dow Befehl
*/5 * * * *   /usr/local/bin/health-ping.sh
30 3 * * *    /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1
0 9 * * 1-5   /usr/local/bin/daily-digest.sh
0 6 1 * *     /usr/local/bin/invoice-run.sh
*/5 * * * *ein Health-Ping alle 5 Minuten, rund um die Uhr — 288 Läufe am Tag
30 3 * * *das nächtliche Backup um 03:30 — als einzige Zeile schreibt sie ihre Ausgabe in ein Log
0 9 * * 1-5die Zusammenfassung um 09:00, nur werktags — 1-5 im letzten Feld heißt Montag–Freitag
0 6 1 * *die Rechnungsstellung am 1. des Monats um 06:00 — die 1 im mittleren Feld ist ein Datum, kein Wochentag
Leserichtung

Wie Sie jedes Cron-Symbol lesen

Jedes Symbol verdichtet mehrere Werte in ein Zeichen; wer es falsch auflöst, liest den Zeitplan im Review falsch:

  • Schritte zählen ab dem Minimum des Feldes. */6 im Stundenfeld heißt 00, 06, 12, 18 — nicht »sechs Stunden nach dem letzten Lauf«.
  • Zahlen in beiden Tagesfeldern bedeuten ODER, nicht UND. Cron startet, sobald eines von beiden passt — der Zeitplan trifft also öfter zu, als er aussieht.
  • Namen und Kurzformen sind Dialekt. MON und @daily versteht diese Seite, und die meisten Crons ebenfalls — Zahlen sind die Schreibweise, die jeder Cron akzeptiert.
Die ODER-Regel live sehen

Die Symbole, zurückgelesen

wofür jedes Zeichen steht
*beliebig — im Minutenfeld sind das 60 Läufe pro Stundetrifft alles
*/6jeder 6. Wert, gezählt ab dem Minimum des Feldesein Schritt
9-17eine Spanne, beide Enden eingeschlossenein Bereich
1,15genau diese Werte, nichts dazwischeneine Liste
MON · JAN3-Buchstaben-Namen, die manche Crons akzeptieren — diese Seite liest sie, Zahlen sind portablerhier lesbar
@dailyeine Kurzform für 0 0 * * * — hier ausgeschrieben, damit Sie sehen, was sie verbirgtausgeschrieben
L # ? WQuartz (Jenkins, Spring) — eine crontab weist die ganze Zeile abkein Cron
Kanonische Form

0 0 * * 0, @weekly und SUN

Alle vier Zeilen unten bedeuten Sonntag um Mitternacht. Der Übersetzer macht aus jeder davon denselben Satz und dieselbe Liste der nächsten Läufe.

Zahlen — die Schreibweise, die jeder Cron akzeptiert0 0 * * 0
Die Kurzform@weekly
Der Tagesname0 0 * * SUN
7 steht ebenfalls für Sonntag0 0 * * 7
Aus der Bibliothek

Alltägliche Cron-Ausdrücke

Jeder ist bereits dekodiert und verlinkt auf seine eigene Seite — nächste Läufe, Varianten und die crontab-Zeile zum Kopieren. Die vollständige Sammlung liegt in der Bibliothek der Cron-Beispiele.

Cron-Job jede Minute* * * * *
Cron-Job alle 5 Minuten*/5 * * * *
Cron-Job alle 15 Minuten*/15 * * * *
Cron-Job alle 30 Minuten*/30 * * * *
Cron-Job stündlich0 * * * *
Cron-Job alle 6 Stunden0 */6 * * *
Cron-Job täglich um Mitternacht0 0 * * *
Cron-Job werktags0 0 * * 1-5
Cron-Job jeden Sonntag0 0 * * 0
Cron-Job monatlich0 0 1 * *
Cron-Job vierteljährlich0 0 1 */3 *
Cron-Job jährlich0 0 1 1 *
FAQ

Die am häufigsten eingefügten Cron-Ausdrücke

Jede Minute jeder Stunde, jeden Tag — 1 440 Läufe am Tag, 525 600 im Jahr. Alle fünf Felder sind Platzhalter, also ist nichts eingeschränkt. Für einen billigen Health-Ping ist das der richtige Zeitplan, für fast alles andere der falsche. Steht so eine geerbte Zeile vor einem teuren Skript, ist sie die erste, die Sie hinterfragen sollten.

Jeder 5. Wert dieses Feldes, gezählt ab seinem Minimum. Im Minutenfeld startet */5 bei :00, :05, :10 … :55 — 12-mal pro Stunde, immer zu denselben Minutenwerten. Es bedeutet nicht »5 Minuten nach dem letzten Lauf«: Cron gleicht Uhrzeitwerte ab. */7 ergibt darum :00, :07 … :56 und dann wieder :00 — eine Lücke von 4 Minuten zu jeder vollen Stunde.

Jeden Tag um Mitternacht, Serverzeit — Minute 0 der Stunde 0, jedes Datum, jeder Monat, jeder Wochentag. Genau diesen Zeitplan kürzt @daily ab. Gemeint ist die Mitternacht des Servers; in den Umstellungsnächten auf Sommer- oder Winterzeit kann eine Maschine mit lokaler Zeit den Lauf überspringen oder doppelt ausführen.

Identisch. Die Kurzformen entsprechen exakt: @hourly = 0 * * * *, @daily und @midnight = 0 0 * * *, @weekly = 0 0 * * 0, @monthly = 0 0 1 * *, @yearly = 0 0 1 1 *. Aus der Reihe fällt @reboot — das ist überhaupt kein Zeitplan, es startet, sobald der Cron-Daemon hochfährt. Dieser Übersetzer schreibt die Kurzformen aus, sodass Sie immer die fünf Felder darunter sehen.

Weil er nicht aus einer crontab stammt. Quartz (Jenkins, Spring), manche Cloud-Scheduler und einige Cron-Bibliotheken stellen ein Sekundenfeld voran; damit sind es sechs — oder sieben mit angehängtem Jahr. Eine crontab installiert die Zeile nicht. Steht im Sekundenfeld eine 0, streichen Sie es; die übrigen fünf lesen sich meist als POSIX. Steht dort etwas anderes, feuert der Zeitplan öfter als einmal pro Minute — und das kann einfaches Cron überhaupt nicht ausdrücken.

Es ist Quartz für »kein bestimmter Wert«. Quartz verlangt, dass genau eines der beiden Tagesfelder ungenutzt bleibt, deshalb bekommt eines von ihnen ein Fragezeichen. POSIX-Cron kennt diese Regel nicht und kein ? — ein einfacher * genügt. Sind beide Tagesfelder tatsächlich eingeschränkt, läuft Cron an der Vereinigungsmenge der beiden. Fügen Sie ein ? in eine crontab ein, wird die Zeile abgewiesen.

Ja. Fügen Sie 30 3 * * * /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1 ein: Der Übersetzer nimmt die fünf Zeitplanfelder, übersetzt nur diese und benennt den Rest der Zeile als den Teil, den er ignoriert hat. Er liest auch die Form von /etc/crontab, bei der zwischen Zeitplan und Befehl ein Benutzername steht. Was er nicht tut: eine Zeile mit sechs Feldern erraten. Ein vorangestelltes Sekundenfeld bedeutet Quartz, nicht crontab, und das ist eine andere Sprache.

Fügen Sie den Ausdruck oben ein. Die Ergebnisansicht listet die nächsten zehn Läufe als konkrete Termine auf, berechnet von einem echten Parser in der Zeitzone Ihres Browsers. Die crontab selbst läuft nach der Uhr des Servers: Steht die Maschine auf UTC und Sie nicht, verschiebt sich die ganze Liste um Ihren Versatz. Nichts davon sagt Ihnen allerdings, ob ein Lauf erfolgreich war — Cron protokolliert nur, dass er gestartet ist.

Gratis-Tools sind erst der Anfang.
Uptimia hält Ihre Websites am Laufen.

Verfügbarkeit, SSL, Domain-Ablauf, Ladezeit, Transaktionen – aus 171+ Standorten weltweit überwacht. 30 Tage kostenlos.

30 Tage gratis keine Kreditkarte jederzeit kündbar kostenloser Plan nach dem Test
100.000+ überwachte Websites · DSGVO-konform