Wenn Ihr Computer heruntergefahren wird (oder der Cron-Daemon ansonsten nicht ausgeführt wird), werden Cron-Jobs nicht gestartet.
Wenn Sie Aufträge haben, die Sie später ausführen möchten, während der Computer heruntergefahren ist, verwenden Sie anacron. Weitere Informationen finden Sie unter "man anacron", "man anacrontab" oder in der Datei / etc / anacrontab.
Ubuntu verwendet standardmäßig Anacron für crontab-Einträge in:
/etc/cron.daily
/etc/cron.weekly
/etc/cron.monthly
Die verbleibenden crontabs müssen vom Haupt-Cron-Daemon verarbeitet werden.
/etc/crontab
/etc/cron.d
/var/spool/cron
ANMERKUNGEN
Anacron selbst wird nicht als Daemon ausgeführt, sondern benötigt Systemstart-Skripte und cron selbst, um ausgeführt zu werden.
Auf der Ubuntu 8.04-Box, die ich gerade betrachte, wird /etc/init.d/anacron beim Booten ausgeführt und jeden Morgen um 07:30 Uhr erneut von cron.
Die README-Datei unter /usr/share/doc/anacron/README.gz enthält etwas mehr Informationen als in den Manpages enthalten.
Beispiele
Fügen Sie für einfache "tägliche", "wöchentliche", "monatliche" Jobs eine Kopie oder einen Symlink zum Skript in eines der oben genannten Verzeichnisse /etc/cron.{daily|weekly|monthly} ein. Anacron sorgt dafür, dass es täglich / wöchentlich / monatlich ausgeführt wird. Wenn Ihr Computer an dem Tag ausgeschaltet ist, an dem die "wöchentlichen" Skripts normalerweise ausgeführt werden, werden sie beim nächsten Einschalten des Computers ausgeführt.
Angenommen, Sie haben hier ein Skript: /usr/local/sbin/maint.sh
Und wenn Sie es alle drei Tage ausführen möchten, sieht der Standardeintrag in / etc / crontab folgendermaßen aus:
# m h dom mon dow user command
0 0 */3 * * root /usr/local/sbin/maint.sh
Wenn Ihr Computer am 3. des Monats nicht um 00:00 Uhr eingeschaltet war, wurde der Auftrag erst am 6. ausgeführt.
Damit der Job stattdessen am vierten ausgeführt wird, wenn der Computer ausgeschaltet ist, und der dritte nicht ausgeführt wird, verwenden Sie dies in / etc / anacrontab (vergessen Sie nicht, die Zeile aus / etc / crontab zu entfernen):
# period delay job-identifier command
3 5 maint-job /usr/local/sbin/maint.sh
Die "Verzögerung" von "5" oben bedeutet, dass anacron 5 Minuten wartet, bevor es diesen Job ausführt. Die Idee ist zu verhindern, dass Anacron Dinge sofort beim Booten abfeuert.