Benutzer-Werkzeuge

Webseiten-Werkzeuge


it:linux:crontab

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~~

it/linux/crontab.txt · Zuletzt geändert: 2019/05/14 21:16 von 127.0.0.1