crontab ist sowohl ein Dateiname (/etc/crontab) als auch ein Befehl, mit dem Steuerungsdateien für cron verwaltet werden.

Die Datei /etc/crontab ist die sog. System-Crontab, auf die nur root Zugriffsrechte hat.

Auf vielen Systemen werden Skripte und Programme (oder Links darauf) in den Verzeichnissen /etc/cron.hourly,daily,weekly,monthly automatisch in dem entsprechenden Intervall abgearbeitet.

Eigene Crontabs werden mit dem Befehl crontab -e verwaltet - dazu wird i.d.R. vi aufgerufen. root darf zusätzlich die Crontabs anderer Benutzer editieren, dazu wird der Benutzername mit der Option -u an das Kommando angehängt.

Eine crontab-Datei ist eine Liste von Befehlen, die automatisch zu einem bestimmten Zeitpunkt ausgeführt werden. Eine Zeile kann einen Befehl oder einen Kommentar enthalten. Kommentare werden mit einem # am Zeilenanfang markiert. Vor jedem Befehl stehen fünf Zahlen, mit denen die Aufrufhäufigkeit eingestellt wird:

1.

Minute

0-59

2.

Stunde

0-23

3.

Tag

1-31

4.

Monat

1-12 oder Jan, Feb, Mar, ..., Dec

5.

Wochentag

0-7 oder Mon-Sun, wobei 0=Sun, 1=Mon, ..., 6=Sat, 7=Sun

Für mehrere Werte können Kommata, für Bereiche können Bindestriche und für alles Mögliche kann * verwendet werden.

Beispiele

Eine User-crontab-Datei, die jeden Mittwoch um 5:30 Uhr morgens /usr/sbin/programm startet, sieht so aus:

30 5 * * 3     /usr/sbin/programm

Eine User-crontab-Datei, die jeden Freitag und jeden 13. um 0:30 Uhr morgens /usr/sbin/programm startet, sieht so aus:

30 0 13 * Fri     /usr/sbin/programm

Eine User-crontab-Datei, die alle fünf Minuten /usr/sbin/programm startet, sieht so aus:

*/5 * * * *     /usr/sbin/programm

Tipps & Tricks

Mit crontab -l kann man sich die aktuelle crontab anzeigen lassen.

Um unerwünschte (Fehler-)Ausgaben zu unterdrücken, kann man eine Fehlerumleitung auf /dev/null verwenden.

Die Abarbeitung der Cron-Jobs wird meistens in Form von Mails an den User protokolliert.

Bei Debian kann man auch einen Job bei jedem Reboot ausführen lassen. siehe man 5 crontab @reboot. Das kann auch jeder user benutzen um z.B. fetchmail -d .. u.s.w. zu starten. :)

Für die Ausgabe von Daten in eine Logfile könnte auch das hier evtl. interessant sein:

crontab (zuletzt geändert am 2010-01-05 08:36:23 durch 188-193-14-164-dynip)