Cronjob (Debian)
Erläuterungen und Anleitung für die Einrichtung von Cronjobs.
Einrichtung von Cronjobs
Es bestehen drei Möglichkeiten der Einrichtung:
- Userunabhängige Cronjobs:
nano /etc/crontab
- setzt Root voraus - Dynamische Cronjob-Erweiterungen: Ablage in
/etc/cron.d/
- Userspezifische Cronjobs:
crontab -e
Diese Datei wird dann unter Debian im Verzeichnis/var/spool/cron/crontab/<username>
abgelegt.
Am besten Minuten nicht auf * setzen, sonst wird der Job jede Minute ausgeführt.
Intervalle für Cronjobs
* # Jede Minute/Stunde/Tag/etc. */3 # Jede dritte Minute/Stunde/Tag/etc. 0,30 # Immer um 0 und 30 (z. B. Minute) 1-12,15-30 # Jede Minute von der ersten bis zur zwölften des Tages, und dann ab der 15. bis zur 30.
Neustart des CronDeamons ist nach der Bearbeitung der Crontab-Dateien nicht notwendig. Dateien werden jede Minute neu gelesen. Vgl. /var/log/syslog
Stündliche, tägliche, wöchentliche, monatliche Jobs
In den folgenden Verzeichnissen können Shell-Skripte abgelegt werden, die in folgenden Intervallen ausgeführt werden:
Intervall | Verzeichnis |
---|---|
Stündlich | /etc/cron.hourly |
Täglich | /etc/cron.daily |
Wöchentlich | /etc/cron.weekly |
Monatlich | /etc/cron.monthly |
Die tatsächliche Ausführungszeit des jeweiligen Intervalls wird mit der Crontab gesteuert:
# m h dom mon dow user command 17 * * * * root cd / && run-parts --report /etc/cron.hourly 25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily ) 47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly ) 52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
Cron vs. Anacron
Tägliche, wöchentliche und monatliche Jobs können entweder von Cron oder von Anacron gesteuert werden, je nach dem, ob Anacron installiert ist.
Auf Serversystemen ist üblicherweise nur Cron installiert, auf Desktopsystemen ist oft auch Anacron installiert.
Die Entscheidung findet in /etc/crontab mit den folgenden Zeilen statt:
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily ) 47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly ) 52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
Falls Anacron installiert ist, wird in den o.g. Zeilen der Befehl run-parts nicht ausgeführt (?).
Stattdessen wird die dynamisch geladene Cron-Datei /etc/cron.d/anacron verarbeitet, die standardmäßig folgenden Inhalt hat:
# /etc/cron.d/anacron: crontab entries for the anacron package SHELL=/bin/sh PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin 30 7 * * * root test -x /etc/init.d/anacron && /usr/sbin/invoke-rc.d anacron start >/dev/null
Anacron wird dann mit der eigenen Crontab aus /etc/anacrontab ausgeführt, die standardmäßig folgenden Inhalt hat:
# /etc/anacrontab: configuration file for anacron # See anacron(8) and anacrontab(5) for details. SHELL=/bin/sh PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin HOME=/root LOGNAME=root # These replace cron's entries 1 5 cron.daily run-parts --report /etc/cron.daily 7 10 cron.weekly run-parts --report /etc/cron.weekly @monthly 15 cron.monthly run-parts --report /etc/cron.monthly
Die Bedeutung der Zahlen in der Daily-Zeile ist, dass diese jedes Intervall mit der Verzögerung von 5 Minuten ausgeführt wird (?).