Inhaltsverzeichnis
Crontab
Kommando | Beschreibung |
---|---|
crontab -e | Crontab erstellen falls es noch nicht existiert. Ansonsten Crontab ändern. |
crontab -l | Crontab anzeigen. |
crontab -r | Crontab löschen. |
crontab -v | Anzeigen wann die Crontab zuletzt geändert wurde. |
crontab Syntax
* * * * * command to be executed - - - - - | | | | | | | | | +----- day of week (1 - 7) (monday = 1) | | | +------- month (1 - 12) | | +--------- day of month (1 - 31) | +----------- hour (0 - 23) +------------- min (0 - 59)
Wenn man bei einem */5 schreibt, bedeutet das: jede(n) 5. 00 05 */5 * * bedeutet also: Jeden 5. Tag, um 05:00 Uhr, beginnend mit dem Monatsersten.
Ein Stern * bedeutet Ausführung wird immer erfolgen, also zu jeder Minute, jeder Stunde, jedem Tag, jedem Monat oder jedem Wochentag.
Um die einzelnen Stellen auseinander zu halten, hilft folgendes Diagram:
1 2 3 4 5 Befehl 1 = Minute (0-59) 2 = Stunde (0-23) 3 = Tag (0-31) 4 = Monat (1-12) 5 = Wochentag (0-7, Sonntag ist 0 oder 7) Befehl = Der auszuführende Befehl.
Für die ersten fünf Stellen, also die Zeiwerte sind folgende Optionen zusätzlich möglich:
* = Ausführung immer (zu jeder…) */n = Ausführung aller n n,x,y = Ausführung um/am n, x und y
Beispiele:
Um zum Beispiel jede Nacht um 5 Uhr morgens das Backup auszuführen, würde man den Cronjob folgendermaßen anlegen:
0 5 * * * /usr/bin/backup.sh
Einen Sound alle 10 Minuten Abzuspielen könnte wie folgt aussehen:
*/10 * * * * /usr/bin/play_sound.sh
Eine Erinnerungsmail um 8 und um 17 Uhr zu verschicken geht z.B. so:
0 8,17 * * * /usr/bin/send_reminder_mail.sh
Ausgabe der Cronjobs
Die Ausgabe der Cronjobs wird standardmässig per Mail an den jeweiligen System-User der den Cronjob eingerichtet hat gesendet. Um dies zu unterdrücken, könnte man die Ausgabe in eine Datei umleiten oder mit Umleitung zu /dev/null komplett verwerfen:
Cronjob-Ausgabe in Logfile umleiten
0 8,17 * * * /usr/bin/script.sh >>/var/log/cron/send_reminder_mail 2>&1
Cronjob-Ausgabe verwerfen
0 8,17 * * * /usr/bin/script.sh >/dev/null 2>&1
2>&1 bedeutet, das sowohl die normale Ausgabe als auch Fehler in die vorher angegebene Datei umgeleitet werden.
Cronjob-Dateien und Verzeichnisse
Zusätzlich zum crontab-Befehl gibt es je nach Distribution Dateien, die systemweite Crontabs beinhalten und nur durch den User root bearbeitet werden können:
/etc/crontab
Die System-Crontab-Datei, in der zusätzlich noch ein System-Benutzer, der den Befehl ausführen soll, mit angegeben werden muß:
Beispiel:
0 8,17 * * * root /usr/bin/script.sh >>/var/log/cron/send_reminder_mail 2>&1
0 3 * * * wwwrun /usr/bin/webjobs_nighly.sh >>/var/log/cron/send_reminder_mail 2>&1
/etc/cron* Verzeichnisse
Eine weitere Möglichkeit Cronjobs anzulegen sind die Verzeichnisse unter /etc/cron*, in denen alle enthaltenen Dateien zum bestimmten Zeitpunkt ausgeführt werden. Die Dateien im Einzelnen
/etc/cron.d/ = Erweiterungen zur /etc/crontab-Datei, gleiche Syntax.
/etc/cron.daily/ = Einmal irgendwann täglich.
/etc/cron.hourly/ = Einmal irgendwann stündlich.
/etc/cron.monthly/ = Einmal irgendwann monatlich.
/etc/cron.weekly/ = Einmal irgendwann wöchentlich.
Die letzten vier werden oft genutzt, wenn ein Job in einem bestimmten Interval erledigt werden muß, der genaue Zeitpunkt hierfür aber unerheblich ist.
~~UP~~