Cron-Jobs einrichten: Aufgaben automatisch ausführen
Regelmäßige Backups, Logrotation, tägliche Berichte – wer will schon morgens um 3 Uhr manuell ein Skript starten? Genau dafür gibt es Cron: Der Dienst des Systems führt Aufgaben zu festgelegten Zeiten automatisch aus. So funktioniert’s.
Wie Cron funktioniert
Cron liest eine Tabelle mit Regeln, die Crontab, in der jede Zeile eine Aufgabe beschreibt. Ein typischer Eintrag:
30 2 * * * /usr/local/bin/backup.sh
Diese Zeile führt das Skript jeden Tag um 2:30 Uhr aus. Das Format hat fünf Felder für Minute, Stunde, Tag des Monats, Monat und Wochentag:
| Feld | Werte | Bedeutung |
|---|---|---|
| Minute | 0–59 | Minute der Stunde |
| Stunde | 0–23 | Stunde des Tages |
| Tag | 1–31 | Tag des Monats |
| Monat | 1–12 | Monat des Jahres |
| Wochentag | 0–7 | 0 und 7 stehen für Sonntag |
Ein Sternchen bedeutet „jeden Wert". Beispiele:
* * * * * # Jede Minute
*/15 * * * * # Alle 15 Minuten
0 9 * * 1 # Jeden Montag um 9 Uhr
0 0 1 * * # Am Ersten jeden Monats um Mitternacht
0 22 * * 1-5 # Werktags um 22 Uhr
Die eigene Crontab pflegen
Jeder Benutzer hat eine eigene Tabelle, bearbeitet wird sie mit crontab:
crontab -e # Tabelle bearbeiten
crontab -l # Einträge anzeigen
crontab -r # Tabelle komplett löschen
Die Bearbeitung öffnet den Standardeditor – in der Regel nano. Ein neuer Eintrag wird als Zeile eingefügt und gespeichert; danach prüft crontab -l das Ergebnis.
Häufige Fallstricke
Drei Dinge sorgen bei Cron immer wieder für Verwirrung:
- Umgebungsvariablen fehlen: Cron startet ohne die Umgebung des Logins. Ein Skript, das
PATHbraucht, sollte den Pfad selbst setzen oder Befehle absolut angeben:/usr/bin/findstattfind. - Ausgabe landet im Nirgendwo: Standardmäßig schickt Cron Ausgaben per Mail. Besser explizit in eine Logdatei umleiten:
0 2 * * * /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1
- Das Skript ist nicht ausführbar: Ohne
x-Recht schlägt jeder Lauf fehl. Vorher mitchmod +x backup.shnachhelfen.
Systemweite Aufgaben
Für Wartungsaufgaben des Systems gibt es die Verzeichnisse unter /etc/cron.daily, /etc/cron.weekly und /etc/cron.monthly – Skripte dort hineinlegen genügt, die Ausführungszeit wird über /etc/crontab festgelegt. Für einzelne Benutzer sind eigene Crontabs aber meist die bessere Wahl.
Fazit
Cron ist eine der ältesten und zugleich zuverlässigsten Lösungen der Unix-Welt. Wer das Fünffeld-Format und die Logik hinter Umgebung und Ausgaben verstanden hat, kann sich über automatisierte Abläufe freuen – und über morgens volle E-Mail-Postfächer wundert er sich nicht mehr.