Miesięcznik informatyków i menedżerów IT sektora publicznego

Artur Pęczak

Zamienniki systemowego harmonogramu zadań

Vixie Cron jest najczęściej używaną implementacją usługi cron w systemach klasy Unix. Nie zmienia tego brak nowych wydań oraz dostępność solidnych zamienników, którymi można zastąpić standardowy program do uruchamiania zadań w określonym czasie.

Słowo cron stało się synonimem programu, który umożliwia zaplanowanie i cykliczne wykonywanie zadania (programu, skryptu, komendy) w zadanym czasie, zgodnie z nakreślonym harmonogramem. Mało kto jednak pamięta, że autorem oryginalnego crona jest Paul Vixie, a jego współczesna wersja, choć to może nie najlepsze określenie, powstała w 1987 r.!

Plany wykonania są definiowane globalnie przez administratora albo przez samych użytkowników, którzy mogą samodzielnie, cyklicznie uruchamiać swoje programy i skrypty zgodnie z ustalonym harmonogramem i z posiadanymi uprawnianiami w systemie. Demon cron wykorzystywany jest do cyklicznego uruchamiania zadań związanych z utrzymaniem systemu, choć sam w sobie nie zawiera żadnych narzędzi realizujących takie funkcje. Administrator może zaplanować wykonanie zadania backupu, rotację logów, indeksację plików, a cron jest tym narzędziem, które wyzwoli dany proces w ustalonym momencie czasu. Zestaw narzędzi administratora uzupełnia program at. Wraz z powiązanymi komendami (atq, atrm i batch) umożliwia on jednorazowe zaplanowanie i wykonanie zadania. To zasadnicza różnica między at a cronem, który służy do cyklicznego uruchamiania programów i skryptów.

Vixie cron

Debian od 1996 r. korzysta z oryginalnej implementacji tego demona w wersji 3.0pl1, która została wydana trzy lata wcześniej. Choć wersja ta przez ponad dwie dekady nie doczekała się żadnej dużej aktualizacji (o ISC cron piszemy dalej), w mocno załatanej formule nadal pozostaje utrzymywana i dostosowywana do kolejnych wydań dystrybucji. Vixie cron 3.0pl1 jest domyślą implementacją usługi cron w aktualnych wydaniach buster, bullseye i sid. W planach pojawia się myśl o migracji ze standardowego crona/anacrona do programu cronie, który to pakiet już dzisiaj znajduje się w dystrybucji eksperymentalnej.

anacron

Demon cron co minuta sprawdza tablicę zadań do wykonania i uruchamia je zgodnie z zaplanowanym harmonogramem. Co jednak, gdy laptop czy komputer stacjonarny nie są włączone całą dobę? Jeśli zadanie nie zostanie uruchomione o czasie, cron nie ponowi jego wykonania ani nie poinformuje o tym fakcie administratora. W przypadku urządzeń, które nie działają 24/7, trzeba sięgnąć po inne rozwiązania.

Tu z pomocą przychodzi anacron. Program stanowi uzupełnienie crona, dostarczając funkcje potrzebne do obsługi harmonogramu zadań na komputerach, które pracują z przerwami. Zamiast z góry zakładać dzień i godzinę wykonania zadania, anacron pozwala wywoływać polecenia w określonych interwałach dziennych. W ten sposób administrator może zaplanować zadanie backupu codziennie, raz na tydzień albo co miesiąc. Zadanie zostanie uruchomione po włączeniu komputera, bez oczekiwania na kolejny cykl harmonogramu. Istotnym parametrem jest opóźnienie (delay), czyli liczba minut, którą anacron odczeka przed wykonaniem zadania. Wszystko po to, aby nie obciążać nadmiernie zasobów komputera zaraz po uruchomieniu. Dodatkowo istnieje możliwość ustalenia przedziału godzinowego, w którym zadanie będzie mogło być uruchamiane.

Anacron stanowi naturalny zamiennik dla crona na komputerach, które nie są włączone całą dobę, choć ma swoje ograniczenia. Program nie jest już rozwijany. Zadania anacrona mogą być definiowane wyłącznie przez administratora, choć istnieje pewne obejście tego założenia. Program nie pozwala wskazać dokładnej godziny wykonania zadania, a samo zadanie może zostać zaplanowane z dokładnością do jednego dnia (co do minuty w przypadku crona). Domyślnie anacron uruchamia zadanie, kiedy komputer jest zasilany z sieci, a nie bateryjnie. Poprawnie za to rozpoznaje wychodzenie ze stanu uśpienia i hibernacji.

cronie

To jeszcze nie koniec tej historii. W 2004 r. Vixie cron doczekał się wersji 4.1, która została przemianowana na ISC cron. Choć wydanie to nie cieszyło się dużym zainteresowaniem, na bazie ISC cron 4.1 powstał fork o nazwie cronie, który początkowo trafił do Fedory i Red Hata, a później do wielu pochodnych dystrybucji, w tym Gentoo, openSUSE czy Arch Linux. Kod źródłowy cronie bazuje na oryginalnym Vixie cronie, ale zawiera dodatkowe łatki zabezpieczeń i rozszerzenia, np. w zakresie obsługi mechanizmów PAM czy SELinux. W cronie włączono również funkcje anacrona, którego funkcjonalność rozpowszechniana jest w subpakiecie do cronie o nazwie cronie-anacron. Repozytorium pakietów Debiana udostępnia kilka alternatywnych implementacji crona i powiązanych aplikacji – w tym przedstawione wcześniej anacron i cronie, a także bcron i mcron. Lista dostępnych zamienników jest dłuższa, co pokazujemy w dalszej części artykułu.

[...]

Autor zawodowo zajmuje się informatyką. Publikuje w magazynach komputerowych i serwisach internetowych.

Pełna treść artykułu jest dostępna w papierowym wydaniu pisma. Zapraszamy do składania zamówień na prenumeratę i numery archiwalne.
 
 

Polecamy

Biblioteka Informacja Publiczna

Specjalistyczne publikacje książkowe dla pracowników administracji publicznej

więcej