Anacron je cron pro stolní počítače a notebooky.
Anacron neočekává, že systém bude běžet 24 x 7 jako server.
Pokud chcete, aby se úloha na pozadí spouštěla automaticky na počítači, který neběží 24 x 7, měli byste použít anacron.
Pokud máte například zálohovací skript naplánovaný každý den ve 23:00 jako běžnou úlohu cron a pokud váš notebook není v 23:00, vaše úloha zálohování se neprovede.
Pokud však máte stejnou úlohu naplánovanou v anacronu, můžete si být jisti, že bude provedena, jakmile se notebook znovu zapne.
Formát Anacrontab
Stejně jako cron má /etc/crontab, anacron má /etc/anacrontab.
/etc/anacrontab má úlohy anacronu uvedené v následujícím formátu.
period delay job-identifier command
Pole 1 je období opakování: Toto je číselná hodnota, která určuje počet dní.
- 1 – denně
- 7 – týdně
- 30 – měsíčně
- N – Může to být jakákoli číselná hodnota. N označuje počet dní
Poznámka:„@monthly“ můžete také použít pro úlohu, kterou je třeba provádět měsíčně.
Pole 2 je Zpoždění: Udává zpoždění v minutách. tj. X počet minut, které by měl anacron čekat před provedením úlohy po spuštění počítače.
Pole 3 je identifikátor úlohy: Je to název souboru časového razítka úlohy. Mělo by být jedinečné pro každou práci. Bude k dispozici jako soubor v adresáři /var/spool/anacron. Tento soubor bude obsahovat jeden řádek, který označuje poslední čas, kdy byla tato úloha provedena.
# ls -1 /var/spool/anacron/ test.daily cron.daily cron.monthly cron.weekly # cat /var/spool/anacron/test.daily 20110507
Pole 4 je příkaz: Příkazový nebo shellový skript, který je třeba provést.
Stejně jako skripty shellu začínají komentáře v souboru anacrontab znakem #
Poznámka: Formát souboru /etc/crontab najdete v našem článku Linux Crontab:15 Awesome Cron Job Example.
Příklad Anacronu
Následující příklad spustí skript /home/sathiya/backup.sh jednou za 7 dní.
V den, kdy se má úloha backup.sh provést, pokud je systém z nějakého důvodu mimo provoz, anacron spustí skript backup.sh 15 minut poté, co se systém znovu spustí (aniž by musel čekat dalších 7 dní).
# cat /etc/anacrontab 7 15 test.daily /bin/sh /home/sathiya/backup.sh
START_HOURS_RANGE a RANDOM_DELAY
Výše uvedený příklad ukazuje, že skript backup.sh by se měl spouštět každý den se zpožděním 15 minut. tj. když byl notebook spuštěn, spusťte jej až po 15 minutách.
Co se stane, když se notebook nebo stolní počítač nevypne? Kdy bude práce provedena? To je určeno proměnnou prostředí START_HOURS_RANGE v souboru /etc/anacrontab.
Ve výchozím nastavení je toto v souboru nastaveno na 3-22. Označuje časový rozsah od 3:00 do 22:00
# grep START /etc/anacrontab START_HOURS_RANGE=3-22
Kromě uživatelem definovaného zpoždění zadaného ve 2. poli souboru /etc/anacrontab, anacron také náhodně přidá x počet minut. X je definováno proměnnou RANDOM_DELAY v souboru /etc/anacrontab.
Ve výchozím nastavení je toto v souboru nastaveno na 45. To znamená, že anacron přidá x minut (náhodně vybraných z 0 a 45) a přidá to k uživatelem definovanému zpoždění.
# grep RANDOM /etc/anacrontab RANDOM_DELAY=45
Cron vs Anacron
Cron a anacron mají své výhody a nevýhody. V závislosti na vašich požadavcích použijte jeden z nich.
Cron | Anacron |
---|---|
Minimální podrobnost je minuta (tj. provádění úloh lze naplánovat každou minutu) | Minimální podrobnost je pouze ve dnech |
Cron úlohu může naplánovat každý normální uživatel (pokud není omezen superuživatelem) | Anacron může používat pouze super uživatel (ale existují řešení, jak jej zpřístupnit normálním uživatelům) |
Cron očekává, že systém poběží 24 x 7. Pokud je naplánována úloha a systém je během této doby mimo provoz, úloha se nespustí. | Anacron neočekává, že systém bude běžet 24 x 7. Pokud je naplánována úloha a systém je během této doby mimo provoz, spustí úlohy, když se systém znovu spustí. |
Ideální pro servery | Ideální pro stolní počítače a notebooky |
Použijte cron, když má být úloha provedena v určitou hodinu a minutu | Použijte anacron, když je třeba provést úlohu bez ohledu na hodinu a minutu |