Mylić o związku między cron i anacron

19

Na próżno szukam w Google, aby znaleźć ogólne wyjaśnienie, w jaki sposób cron i anacron działają razem. W tym momencie strony podręcznika są dla mnie trochę zbyt głębokie.

Czuję się zagubiony, ponieważ dodaję zadania do crontab i to działa, ale kiedy usuwam je z crontab, nadal działają pod anacronem. Widzę zadania w /etc/cron.daily, ale nie jestem pewien, jak się tam dostały. cron zawsze działa w moim systemie, ale nie anacron. W rzeczywistości widzę, że anacron jest uruchamiany przez crona!

Zasadniczo chciałbym wprowadzić wprowadzenie na poziomie użytkownika na temat dodawania i usuwania zadań, ponieważ łatwe do przeszukiwania odpowiedzi, które mówią, aby wyraźnie edytować crontab, nie są kompletne. Link do samouczka byłby w porządku.

Marmur Organiczny
źródło

Odpowiedzi:

19

Zarówno croni anacronsą 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 croni anacronpolega 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 anacronjest „anachroniczny” i jest przeznaczony dla systemów, które nie działają 24x7. Aby działał, anacronużywa plików ze znacznikami czasu, aby dowiedzieć się, kiedy ostatnio wykonywane były jego polecenia. Utrzymuje również plik /etc/anacrontabtak jak cronrobi. Ponadto cron.dailycodziennie uruchamia anakron. Dlatego anacronmoże wykonywać zadanie tylko raz dziennie, ale cronmoż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.shzadanie ma zostać wykonane, jeśli system nie działa, anacronwykona się script.sh15 minut po ponownym uruchomieniu systemu.

Kilka referencji:

Ron
źródło
Dzięki temu samouczek Digital Ocean jest szczególnie dobry, jak to często bywa. Nie jestem pewien, jak to przeoczyłem, więc doceniam link.
Organic Marble
Dzięki. Czy przez „cron.daily uruchamia anakron co godzinę”, czy masz na myśli „cron.daily uruchamia anakron codziennie”?
Tim
Dzięki za to. - anacronUsunąłem ze wszystkich moich VPS, ponieważ są one zawsze włączone. (Nie mam pojęcia, jak to się tam dostało, nie słyszałem o tym.) Moje crontabwpisy (codziennie, co tydzień, ...) teraz są wyświetlane w oczekiwanych godzinach.
Adambean