Programme mit cron starten
Das Werkzeug cron verwendet zwei verschiedene Konfigurationsdateien: Die System-crontab und die Benutzer-crontab. Der einzige Unterschied zwischen beiden Formaten ist das sechste Feld. In der System-crontab gibt das sechste Feld das Konto an, unter dem ein Kommando läuft. Aus der System-crontab können daher Kommandos unter beliebigen Konten gestartet werden. In der Benutzer-crontab gibt das sechste Feld das auszuführende Kommando an. Alle Kommandos laufen unter dem Konto, unter dem die crontab erstellt wurde (ein wichtiges Sicherheitsmerkmal).
Achtung:
Benutzer können mit Benutzer-crontabs ohne root-Rechte Befehle terminieren. Die Kommandos in Benutzer-crontabs laufen unter dem Benutzer, der die crontab erstellt hat.
Der Benutzer root kann, wie jeder andere Benutzer, eine Benutzer-crontab besitzen. Die Benutzer-crontab von root ist nicht mit der Datei /etc/crontab, der System-crontab, zu verwechseln. Normalerweise besitzt root, wegen der Existenz der System-crontab, keine eigene Benutzer-crontab.
Beispiele
crontab -l | listet die Cron jobs des aktuellen Benutzers auf |
crontab -u paul -l | listet alle Cron jobs von User paul |
crontab -e | zum erstellen/modifizieren von Cronjobs |
crontab -u paul -e | zum erstellen/modifizieren von Cronjobs des Users paul (nur als root) |
crontab -r | Löscht alle Cron Jobs von aktuellen Benutzer |
crontab -u paul -r | Löscht alle Cron Jobs von paul |
Die Syntax
# For details see man 4 crontabs Example of job definition: .---------------- minute (0 - 59) | .------------- hour (0 - 23) | | .---------- day of month (1 - 31) | | | .------- month (1 - 12) OR jan,feb,mar,apr ... | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat | | | | | * * * * * user-name command to be executedDas bedeutet:
Ein Cron Job besteht aus diesen sieben Einträgen:
1 | 2 | 3 | 4 | 5 | 6 | 7 |
---|---|---|---|---|---|---|
Minute | Stunde | Tag | Monat | Wochentag | Benutzer | auszuführendes Kommando |
0 - 59 oder * | 0-23 oder * | 0-31 oder * | 1-12 jan-dec oder * | 0-6 sun-sat oder * | Benutzername | Kommando |
Ein Feld mit Sternchen(*), steht immer für „alle“ |
Weitere Zeitangaben | |
---|---|
1,2,5,9 | jede erste, zweite, fünfte, und neunte (Minute, Stunde, Monat…) |
0-4,8-12 | alle (Minuten, Stunden, Monate,…) on 0 bis 4 und von 8 bis 12 |
*/5 | jede fünfte (Minute, Stunde, Monet, …) |
1-9/2 ist das gleiche wie 1,3,5,7,9 |
Zwei Beispiele:
führe /usr/local/ispconfig/server/server.sh jede Minute aus:
* * * * * /usr/local/ispconfig/server/server.sh
führe /usr/local/ispconfig/server/cron_daily.sh einmal pro Tag um 00:30h aus:
30 00 * * * /usr/local/ispconfig/server/cron_daily.sh
Alle 5 Minuten einen Job ausführen
0-59/5 * * * * /dir/jobname