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:

  1. Umgebungsvariablen fehlen: Cron startet ohne die Umgebung des Logins. Ein Skript, das PATH braucht, sollte den Pfad selbst setzen oder Befehle absolut angeben: /usr/bin/find statt find.
  2. 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
  1. Das Skript ist nicht ausführbar: Ohne x-Recht schlägt jeder Lauf fehl. Vorher mit chmod +x backup.sh nachhelfen.

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.