Die Cron-Syntax ist eines dieser Dinge, die man in zehn Minuten lernt und zehn Jahre lang nicht behält. Fünf Felder, Bereiche, Schritte, Listen, der Unterschied zwischen */5 und 0,5,10,15,...,55 — und der berüchtigt langsame Testzyklus Eintrag schreiben, eine Stunde warten, sehen ob's lief. Nach Absicht zu fragen ist schneller.
Fünf reale Zeitpläne
Alle 5 Minuten in Geschäftszeiten
$ clai Cron-Zeile: alle 5 Minuten von 9 bis 17 Uhr werktags→ */5 9-17 * * 1-5
Erster Tag des Monats
$ clai Cron-Zeile: 02:30 am ersten Tag jedes Monats→ 30 2 1 * *
Jeden Montag um 3 Uhr morgens
$ clai Cron-Zeile: jeden Montag um 03:00→ 0 3 * * 1
Alle 15 Minuten, aber 23:00–06:00 auslassen
$ clai Cron-Zeile: alle 15 Minuten zwischen 06:00 und 22:59→ */15 6-22 * * *
Stündlich, nur werktags
$ clai Cron-Zeile: zur vollen Stunde, Montag bis Freitag→ 0 * * * 1-5
Was schon da ist
Bevor du einen Plan in crontab -e einträgst, zeig dir, was schon läuft:
$ clai zeig mein aktuelles crontab→ crontab -l
Eine kleine Warnung
Cron-Zeitpläne werden in der Zeitzone des Cron-Daemons interpretiert, meist die Systemzeitzone. Wenn dein „jeden Montag um 3 Uhr morgens" 3 Uhr Londoner Zeit auf einem UTC-Server bedeuten muss, sag das im Prompt — „jeden Montag um 3 Uhr morgens Londoner Zeit, ausgedrückt in UTC" — und du bekommst entsprechend angepasstes 0 3 * * 1 (oder, wenn dein Daemon es kann, einen CRON_TZ=Europe/London-Eintrag).
Siehe auch
- Alte Logs und Backups aufräumen — der natürliche Ort für einen wöchentlichen Cron-Eintrag.
- Vom Einzeiler zum Script — wann ein Cron-Job ein eigenes Script verdient.