Cronjob (Debian)

Erläuterungen und Anleitung für die Einrichtung von Cronjobs.

Falls Anacron installiert ist (üblicherweise auf Desktop-Installationen), übernimmt es die Aufgaben von Cron.

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 (?).