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.