Wyszukiwanie w witrynie

Cron kontra Anacron: jak planować zadania za pomocą Anacron w systemie Linux


W tym artykule wyjaśnimy cron i anacron, a także pokażemy, jak skonfigurować anacron w systemie Linux. Omówimy również porównanie tych dwóch narzędzi.

Aby zaplanować zadanie na określoną lub późniejszą godzinę, możesz użyć poleceń „at” lub „batch”, a aby skonfigurować polecenia do powtarzania, możesz użyć polecenia cron i anacron.

Cron – to demon służący do uruchamiania zaplanowanych zadań, takich jak kopie zapasowe systemu, aktualizacje i wiele innych. Nadaje się do uruchamiania zaplanowanych zadań na komputerach, które będą działać nieprzerwanie 24 godziny na dobę, 7 dni w tygodniu, takich jak serwery.

Polecenia/zadania są umieszczane w skryptach w zadaniach cron, które są zaplanowane w plikach crontab. Domyślny systemowy plik crontab to /etc/crontab, ale każdy użytkownik może również utworzyć własny plik crontab, który będzie mógł uruchamiać polecenia w czasie określonym przez użytkownika.

Aby utworzyć osobisty plik crontab, po prostu wpisz następujące polecenie:

crontab -e

Jak skonfigurować Anacron w systemie Linux

Anacron służy do okresowego uruchamiania poleceń z częstotliwością określoną w dniach. Działa trochę inaczej niż cron; zakłada, że maszyna nie będzie włączona przez cały czas.

Jest odpowiedni do uruchamiania zaplanowanych zadań codziennych, tygodniowych i miesięcznych, zwykle uruchamianych przez cron, na komputerach, które nie będą działać 24 godziny na dobę, 7 dni w tygodniu, takich jak laptopy i komputery stacjonarne.

Zakładając, że masz zaplanowane zadanie (takie jak skrypt kopii zapasowej), które ma być uruchamiane przy użyciu cron co północ, prawdopodobnie podczas snu, i do tego czasu komputer stacjonarny/laptop jest wyłączony. Twój skrypt kopii zapasowej nie zostanie wykonany.

Jeśli jednak użyjesz anacron, możesz być pewien, że przy następnym włączeniu komputera stacjonarnego/laptopa skrypt kopii zapasowej zostanie wykonany.

Jak Anacron działa w systemie Linux

Zadania anacron są wymienione w /etc/anacrontab, a zadania można planować przy użyciu poniższego formatu (komentarze w pliku anacrontab muszą zaczynać się od #).

period   delay   job-identifier   command

Z powyższego formatu:

  • okres – jest to częstotliwość wykonywania zadania określona w dniach lub jako @codziennie, @co tydzień lub @co miesiąc raz na dzień, tydzień lub miesiąc. Można także używać liczb: 1 – codziennie, 7 – co tydzień, 30 – co miesiąc i N – liczba dni.
  • opóźnienie – to liczba minut oczekiwania przed wykonaniem zadania.
  • id-zadania – to charakterystyczna nazwa zadania zapisana w plikach dziennika.

Aby wyświetlić przykładowe pliki, wpisz:

ls -l /var/spool/anacron/

total 12
-rw------- 1 root root 9 Jun  1 10:25 cron.daily
-rw------- 1 root root 9 May 27 11:01 cron.monthly
-rw------- 1 root root 9 May 30 10:28 cron.weekly
  • polecenie – jest to polecenie lub skrypt powłoki, który ma zostać wykonany.
Tak się praktycznie dzieje:
  • Anacron sprawdzi, czy zadanie zostało wykonane w podanym w polu okresu okresie. Jeśli nie, wykonuje polecenie określone w polu poleceń po odczekaniu liczby minut określonej w polu opóźnienia.
  • Po wykonaniu zadania zapisuje datę w pliku znacznika czasu w katalogu /var/spool/anacron pod nazwą określoną w polu job-id (nazwa pliku znacznika czasu).

Spójrzmy teraz na przykład. Spowoduje to codzienne uruchamianie skryptu /home/aaronkilik/bin/backup.sh:

@daily    10    example.daily   /bin/bash /home/aaronkilik/bin/backup.sh

Jeśli maszyna jest wyłączona w chwili spodziewanego uruchomienia zadania backup.sh, anacron uruchomi je 10 minut po włączeniu maszyny, bez konieczności czekania kolejnych 7 dni.

W pliku anacrontab znajdują się dwie ważne zmienne, które powinieneś zrozumieć:

  • START_HOURS_RANGE – ustawia przedział czasowy, w którym zadania będą uruchamiane (tzn. wykonywane będą zadania tylko w kolejnych godzinach).
  • RANDOM_DELAY – określa maksymalne losowe opóźnienie dodawane do zdefiniowanego przez użytkownika opóźnienia zadania (domyślnie jest to 45).

Tak prawdopodobnie wyglądałby Twój plik anacrontab.

/etc/anacrontab: configuration file for anacron

See anacron(8) and anacrontab(5) for details.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
HOME=/root
LOGNAME=root

These replace cron's entries
1       5       cron.daily      run-parts --report /etc/cron.daily
7       10      cron.weekly     run-parts --report /etc/cron.weekly
@monthly        15      cron.monthly    run-parts --report /etc/cron.monthly

@daily    10    example.daily   /bin/bash /home/aaronkilik/bin/backup.sh                                                                      

Poniżej znajduje się porównanie cron i anacron, które pomoże Ci zrozumieć, kiedy używać któregoś z nich.

It’s a daemon

To nie jest demon

Appropriate for server machines

Nadaje się do komputerów stacjonarnych/laptopów

Enables you to run scheduled jobs every minute

Umożliwia jedynie codzienne uruchamianie zaplanowanych zadań

Doesn’t executed a scheduled job when the machine if off

Jeśli maszyna zostanie wyłączona w momencie upływu zaplanowanego zadania, wykona zaplanowane zadanie po następnym włączeniu zasilania

Can be used by both normal users and root

Może być używany tylko przez roota, chyba że inaczej (włączone dla zwykłych użytkowników z określonymi konfiguracjami)

Główna różnica między cron i anacron polega na tym, że cron działa skutecznie na maszynach, które będą działać nieprzerwanie, gdy anacron jest przeznaczony dla maszyn, które zostaną wyłączone w ciągu dnia lub tygodnia.

Jeśli znasz inny sposób, podziel się z nami, korzystając z poniższego formularza komentarza.