Zarówno cron
i anacron
są demony, które można zaplanować wykonywanie powtarzalnych zadań w pewnym momencie w czasie określonym przez użytkownika.
Główna różnica między cron
i anacron
polega na tym, że ta pierwsza zakłada, że system działa nieprzerwanie. Jeśli twój system jest wyłączony i masz zaplanowane zadanie w tym czasie, zadanie nigdy nie zostanie wykonane.
Z drugiej strony anacron
jest „anachroniczny” i jest przeznaczony dla systemów, które nie działają 24x7. Aby działał, anacron
używa plików ze znacznikami czasu, aby dowiedzieć się, kiedy ostatnio wykonywane były jego polecenia. Utrzymuje również plik /etc/anacrontab
tak jak cron
robi. Ponadto cron.daily
codziennie uruchamia anakron. Dlatego anacron
może wykonywać zadanie tylko raz dziennie, ale cron
może działać tak często, jak co minutę.
Od man anacrontab
:
Po uruchomieniu Anacron czyta listę zadań z pliku konfiguracyjnego, zwykle / etc / anacrontab (patrz anacrontab (5)). Ten plik zawiera listę zadań kontrolowanych przez Anacron. Każdy wpis zadania określa okres w dniach, opóźnienie w minutach, unikalny identyfikator zadania i polecenie powłoki.
Dla każdego zadania Anacron sprawdza, czy to zadanie zostało wykonane w ciągu ostatnich n dni, gdzie n jest okresem określonym dla tego zadania. Jeśli nie, Anacron uruchamia polecenie powłoki zadania po odczekaniu liczby minut określonej jako parametr opóźnienia.
Po wyjściu polecenia Anacron zapisuje datę w specjalnym pliku znacznika czasu dla tego zadania, dzięki czemu może wiedzieć, kiedy wykonać go ponownie. Do obliczeń czasu używana jest tylko data. Godzina nie jest używana.
Oznacza to, że jeśli zaplanowane jest codzienne uruchamianie zadania, a komputer został wyłączony w tym czasie, podczas uruchamiania anakronu może zobaczyć, że zadanie zostało ostatnio uruchomione ponad 24 godziny temu i poprawnie wykonać zadanie.
Na przykład, jeśli określisz w /etc/anacrontab
:
7 15 test.daily /bin/sh /home/username/script.sh
a w dniu, w którym script.sh
zadanie ma zostać wykonane, jeśli system nie działa, anacron
wykona się script.sh
15 minut po ponownym uruchomieniu systemu.
Kilka referencji: