Rain WikiWindows · Linux · Android

cron und crontab

DienstDie meisten Linux-Distributionen

cron ist der klassische Unix-Daemon, der Befehle nach einem Zeitplan ausführt. Jeder Benutzer hat eine crontab, die mit crontab -e bearbeitet wird und in der jede Zeile fünf Zeitfelder (Minute, Stunde, Tag des Monats, Monat, Wochentag) gefolgt vom Befehl enthält. Systemaufgaben befinden sich in /etc/crontab und /etc/cron.d/.

1Die Zeitfelder

'30 2 * * *' bedeutet täglich um 02:30 Uhr; '*/10 * * * *' alle zehn Minuten; '0 9 * * 1' montags um 09:00 Uhr. Die Wochentage 0 und 7 stehen für Sonntag.

2Systemdateien

Dateien in /etc/cron.d/ und /etc/crontab haben ein zusätzliches Feld, den Benutzernamen, zwischen der Zeit und dem Befehl. Verzeichnisse wie /etc/cron.daily enthalten Skripte, die einmal täglich ausgeführt werden.

3Häufige Fallstricke

cron läuft in einer minimalen Umgebung: Verwenden Sie absolute Pfade oder setzen Sie PATH in der crontab. Die Ausgabe wird an den Eigentümer gesendet oder geht verloren; leiten Sie sie in eine Protokolldatei um. Das Zeichen % hat in crontab-Zeilen eine besondere Bedeutung und muss als \% maskiert werden.

4systemd-Timer

Auf Distributionen mit systemd sind .timer-Einheiten eine Alternative mit Protokollierung im Journal, zufälligen Verzögerungen und dem Nachholen verpasster Ausführungen (Persistent=true).

So fügen Sie eine tägliche Aufgabe hinzu

  1. Öffnen Sie Ihre crontab: crontab -e
  2. Fügen Sie eine Zeile hinzu, zum Beispiel: 30 2 * * * /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1
  3. Speichern und beenden; cron übernimmt die Änderung automatisch.
  4. Listen Sie die Aufgaben auf: crontab -l

Vorsicht

  • crontab -r löscht die gesamte crontab ohne Rückfrage.
  • Testen Sie den Befehl manuell mit demselben Benutzer, bevor Sie ihn planen.

Quellen

  1. crontab(5) man7.org
  2. crontab(5) (Debian) manpages.debian.org
  3. systemd.timer(5) man7.org

Zuletzt geprüft: