Beide cron
und anacron
sind Daemons, die die Ausführung wiederkehrender Aufgaben zu einem vom Benutzer festgelegten Zeitpunkt planen können.
Der Hauptunterschied zwischen cron
und anacron
besteht darin, dass ersteres davon ausgeht, dass das System kontinuierlich läuft. Wenn Ihr System ausgeschaltet ist und in dieser Zeit ein Job geplant ist, wird der Job nie ausgeführt.
Andererseits anacron
ist es anachronistisch und wurde für Systeme entwickelt, die nicht rund um die Uhr laufen. Damit es funktioniert, werden anacron
mit Zeitstempeln versehene Dateien verwendet, um herauszufinden, wann die Befehle zum letzten Mal ausgeführt wurden. Ebenso wird eine Datei verwaltet, /etc/anacrontab
wie dies auch der cron
Fall ist. Außerdem cron.daily
läuft anacron jeden Tag. Daher anacron
kann ein Job nur einmal am Tag ausgeführt werden, aber er cron
kann so oft wie jede Minute ausgeführt werden.
Von man anacrontab
:
Bei der Ausführung liest Anacron eine Liste von Jobs aus einer Konfigurationsdatei, normalerweise / etc / anacrontab (siehe anacrontab (5)). Diese Datei enthält die Liste der Jobs, die Anacron steuert. Jeder Jobeintrag gibt einen Zeitraum in Tagen, eine Verzögerung in Minuten, eine eindeutige Job-ID und einen Shell-Befehl an.
Anacron prüft für jeden Auftrag, ob dieser Auftrag in den letzten n Tagen ausgeführt wurde, wobei n der für diesen Auftrag angegebene Zeitraum ist. Wenn nicht, führt Anacron den Shell-Befehl des Jobs aus, nachdem er auf die als Verzögerungsparameter angegebene Anzahl von Minuten gewartet hat.
Nachdem der Befehl beendet wurde, zeichnet Anacron das Datum in einer speziellen Zeitstempeldatei für diesen Job auf, damit er weiß, wann er erneut ausgeführt werden muss. Für die Zeitberechnung wird nur das Datum verwendet. Die Stunde wird nicht verwendet.
Dies bedeutet, dass, wenn eine Aufgabe täglich ausgeführt werden soll und der Computer während dieser Zeit ausgeschaltet war, beim Ausführen von anacron angezeigt wird, dass die Aufgabe zuletzt vor mehr als 24 Stunden ausgeführt wurde, und die Aufgabe ordnungsgemäß ausgeführt wird.
Wenn Sie beispielsweise Folgendes in angeben /etc/anacrontab
:
7 15 test.daily /bin/sh /home/username/script.sh
und an dem Tag, an dem der script.sh
Job ausgeführt werden soll, werden, wenn das System nicht ausgeführt anacron
wird, die script.sh
15 Minuten ausgeführt, nachdem das System wieder hochgefahren wurde.
Einige Hinweise:
anacron
alle meine VPSs entfernt, da sie immer in Betrieb sind. (Keine Ahnung, wie es dort hingekommen ist, ich hatte noch nie davon gehört.) Meinecrontab
Einträge (täglich, wöchentlich, ...) werden jetzt alle zu den erwarteten Zeiten ausgeführt.