Inhaltsverzeichnis

Anacron: wöchentliche oder monatliche Jobs starten nicht

21.08.2013

Problem

In einem früheren Blogbeitrag beschreibe ich, wie man mittels anacron und rsnapshot eine Backuplösung implementieren kann.

Diese Lösung baut darauf auf, dass wöchentliche oder monatliche Aufrufe von rsnapshot zuverlässig von anacron durchgeführt werden. Im Laufe der Zeit stellte ich aber Unregelmäßigkeiten fest: die wöchentlichen und monatlichen Aufrufe fanden nur ab und zu statt, eben nicht wöchentlich oder monatlich.


Ursache

Anacron wird von Cron gestartet. Die crontab (/etc/crontab) sieht wie folgt dazu aus:

# 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 )

Der tägliche anacron-Aufruf erfolgt also um 6:25 Uhr. Der wöchentliche Aufruf Sonntags um 6:47 Uhr und der monatliche Aufruf am 1. des Monats um 6:52 Uhr.

Darin liegt das Problem:
wenn der Rechner nicht zu diesen Terminen in Betrieb ist, entfällt der jeweilige Anacron-Aufruf. Hier liegt also ein - meiner Meinung nach - großer Fehler in der Grundeinstellung vor. Anacron soll ja gerade auf Rechnern, die nicht rund um die Uhr laufen, die regelmäßige Ausführung von Jobs garantieren - und über diese Termin-Lösung mit Cron ist genau das nicht garantiert.


Lösung

Durch eine einfache Anpassung der crontab (etc/crontab) kann die Ausführung von Anacron garantiert werden: die Einträge werden so geändert, dass Anacron mindestens täglich - besser stündlich - gestartet wird. Also gerade die Einträge für wöchentliche und monatliche Jobs. Anacron verwaltet selbst wann welcher Job gestartet wurde und wird entsprechend erst Jobs starten, wenn die Woche/der Monat vorbei ist.

# m h dom mon dow user  command
17 *    * * *   root    cd / && run-parts --report /etc/cron.hourly
25 *    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 *    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 *    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )

Es werden also nur die Minuten gesetzt, alle anderen Einträge werden durch Sternchen (*) ersetzt.


zurück