Anacron ist der Cron für Desktops und Laptops.
Anacron erwartet nicht, dass das System rund um die Uhr wie ein Server läuft.
Wenn Sie möchten, dass ein Hintergrundjob automatisch auf einem Computer ausgeführt wird, der nicht rund um die Uhr läuft, sollten Sie anacron verwenden.
Wenn Sie beispielsweise ein Backup-Skript jeden Tag um 23:00 Uhr als regulären Cron-Job geplant haben und Ihr Laptop um 23:00 Uhr nicht betriebsbereit ist, wird Ihr Backup-Job nicht ausgeführt.
Wenn Sie jedoch denselben Job in Anacron geplant haben, können Sie sicher sein, dass er ausgeführt wird, sobald der Laptop wieder hochgefahren ist.
Anacrontab-Format
So wie Cron /etc/crontab hat, hat Anacron /etc/anacrontab.
Die Datei /etc/anacrontab enthält die erwähnten Anacron-Jobs im folgenden Format.
period delay job-identifier command
Feld 1 ist Wiederholungszeitraum: Dies ist ein numerischer Wert, der die Anzahl der Tage angibt.
- 1 – täglich
- 7 – wöchentlich
- 30 – monatlich
- N – Dies kann ein beliebiger numerischer Wert sein. N gibt die Anzahl der Tage an
Hinweis:Sie können auch „@monthly“ für einen Job verwenden, der monatlich ausgeführt werden muss.
Feld 2 ist Verzögerung: Dies gibt die Verzögerung in Minuten an. D.h. X Minuten, die Anacron warten sollte, bevor der Job ausgeführt wird, nachdem die Maschine gestartet wurde.
Feld 3 ist die Stellenkennung: Dies ist der Name für die Zeitstempeldatei des Jobs. Es sollte für jeden Job einzigartig sein. Diese wird als Datei im Verzeichnis /var/spool/anacron verfügbar sein. Diese Datei enthält eine einzelne Zeile, die angibt, wann dieser Job zuletzt ausgeführt wurde.
# ls -1 /var/spool/anacron/ test.daily cron.daily cron.monthly cron.weekly # cat /var/spool/anacron/test.daily 20110507
Feld 4 ist Befehl: Befehl oder Shell-Skript, das ausgeführt werden muss.
Genau wie Shell-Skripte beginnen Kommentare in einer anacrontab-Datei mit #
Hinweis: Informationen zum /etc/crontab-Dateiformat finden Sie in unserem Artikel Linux Crontab:15 Awesome Cron Job Examples.
Anacron-Beispiel
Das folgende Beispiel führt das Skript /home/sathiya/backup.sh alle 7 Tage einmal aus.
An dem Tag, an dem der Job backup.sh ausgeführt werden soll und das System aus irgendeinem Grund heruntergefahren ist, führt anacron das Skript backup.sh 15 Minuten, nachdem das System wieder hochgefahren ist, aus (ohne weitere 7 Tage warten zu müssen).
# cat /etc/anacrontab 7 15 test.daily /bin/sh /home/sathiya/backup.sh
START_HOURS_RANGE und RANDOM_DELAY
Das obige Beispiel zeigt, dass das Skript backup.sh jeden Tag mit einer Verzögerung von 15 Minuten ausgeführt werden sollte. D.h. wenn der Laptop gestartet wurde, wurde er erst nach 15 Minuten ausgeführt.
Was passiert, wenn der Laptop oder Desktop nicht heruntergefahren wurde? Wann wird der Job ausgeführt? Dies wird durch die Umgebungsvariable START_HOURS_RANGE in der Datei /etc/anacrontab angegeben.
Standardmäßig ist dies in der Datei auf 3-22 eingestellt. Dies gibt den Zeitbereich von 3:00 Uhr bis 22:00 Uhr an.
# grep START /etc/anacrontab START_HOURS_RANGE=3-22
Zusätzlich zu der benutzerdefinierten Verzögerung, die im 2. Feld der Datei /etc/anacrontab angegeben ist, fügt anacron zufällig x Minuten hinzu. Das x wird durch die Variable RANDOM_DELAY in der Datei /etc/anacrontab definiert.
Standardmäßig ist dies in der Datei auf 45 eingestellt. Das bedeutet, dass anacron x Minuten hinzufügt (zufällig zwischen 0 und 45 ausgewählt) und dies zur benutzerdefinierten Verzögerung hinzufügt.
# grep RANDOM /etc/anacrontab RANDOM_DELAY=45
Cron gegen Anacron
Cron und Anacron haben ihre eigenen Vor- und Nachteile. Verwenden Sie je nach Bedarf eine davon.
Cron | Anacron |
---|---|
Die minimale Granularität ist minütlich (d. h. Jobs können so geplant werden, dass sie jede Minute ausgeführt werden) | Mindestauflösung nur in Tagen |
Cron-Job kann von jedem normalen Benutzer geplant werden (wenn nicht durch Superuser eingeschränkt) | Anacron kann nur von Superuser verwendet werden (aber es gibt Problemumgehungen, um es für normale Benutzer nutzbar zu machen) |
Cron erwartet, dass das System rund um die Uhr läuft. Wenn ein Job geplant ist und das System während dieser Zeit heruntergefahren ist, wird der Job nicht ausgeführt. | Anacron erwartet nicht, dass das System rund um die Uhr läuft. Wenn ein Job geplant ist und das System während dieser Zeit heruntergefahren ist, startet es die Jobs, wenn das System wieder hochfährt. |
Ideal für Server | Ideal für Desktops und Laptops |
Cron verwenden, wenn ein Job zu einer bestimmten Stunde und Minute ausgeführt werden muss | Anacron verwenden, wenn ein Job unabhängig von Stunde und Minute ausgeführt werden muss |