PROGRAMY AUTOMATYZUJĄCE CRON, ANACRON Grzegorz Brodziński
Czym jest Automatyzacja? Automatyzacja pracy, czyli wygoda Admina. Niejednokrotnie zdarza się, że jakąś czynność musimy wykonywać w regularnych odstępach czasu. Na przykład, co 5 minut robić zrzut ekranu i wysyłać go na serwer FTP. Równie dobrze może to być wykonywanie co jakiś czas dowolnego skryptu (shell) bądź uruchamianie dowolnego programu.
Cron Cron – Jest to narzędzie wykorzystywane przez administratorów i użytkowników systemów unix w celu automatyzacji systemowych zadań cyklicznych. Jest to deamon, czyli program który jest cały czas włączony w tle. Wszystkie dane, kiedy i jaką komendę wykonać przechowuje plik crontab.
crontab - tabela programu Cron posiadająca specjalny format oraz nazwa programu służącego do jej edycji. Etymologia nazwy odnosi się do języka greckiego (χρόνος [czyt. chronos] - znaczy czas). Program crontab wywoływany z linii poleceń z opcją -l wyświetla aktualną tabelę użytkownika. Opcja -r usuwa ją, a -e pozwala na jej edycję.
Przykładowe wpisy w crontab #Uruchamiaj komendę ping co minutę w każdej godzinie, #każdym miesiącu przez cały rok: * * * * /sbin/ping -c 1 192.168.0.1 > /dev/null #Komenda bada rozmiar podanego folderu i wysyła #informację na podanego maila o 2 rano od 1 do 10 dnia co #miesiąc. PATH=/usr/local/sbin:/usr/local/bin:/home/user1/bin MAILTO=user1@nowhere.org,user2@somewhere.org 0 2 1-10 * * du -h --max-depth=1 /
Dodatkowe parametry: W zapisie * * * * * `pojawić może się dodatkowe 8 parametrów w postaci łańcucha tekstowego którego zapis należy poprzedzić znakiem „@”. String: Znaczenie: Odpowiednik: @reboot Uruchamia przy stracie systemu. - @yearly Uruchamia co rok. 0 0 1 1 * @annually Tak samo jak @yearly @monthly Uruchamia co miesiąc. 0 0 1 * * @weekly Uruchamia co tydzień. 0 0 * * 0 @daily Uruchamia raz na dzień. 0 0 * * * * @midnight Uruchamia o północy. @hourly Uruchamia co godzinę. 0 * * * *
Przykładowe wpisy w crontab z wykorzystaniem dodatkowych parametrów: #Uruchamia funkcję która czyści logi na początek każdego dnia. @daily /home/ramesh/arch-linux/bin/cleanup-logs „Początek dnia„ #Uruchamia funkcję która robi backup na początku każdego miesiąca. @monthly /home/sathiya/fedora/bin/monthly-backup
Przykładowa lista zadań crona - widok w module Webmina:
Gnome-Schedule – edycja cronetab poprzez GUI:
Anacron Anacron – jest to program działający w systemie Unix, stanowiący uzupełnienie klasycznego cron o założenie, że system może pracować z przerwami; jako taki wymaga innego demona cron do poprawnego działania. Dzięki temu, może być on używany do wywoływania poleceń w określonych interwałach (minimum dziennych), na maszynach nie będących włączonymi przez 24h na dobę. Anacron został napisany przez Seana Perry'ego, lecz obecnie nie jest rozwijany
Anacrontab – Należy edytować tabelę anacrontab podobnie jak crontab Anacrontab – Należy edytować tabelę anacrontab podobnie jak crontab. Tabela ta zawiera cztery parametry:
Przykłady zastosowania Anacron Wyobraźmy sobie sytuację gdzie system codziennie o 15:00 robi automatyczny Backup bazy danych. Niestety z powodu awarii zasilania przerwa w działaniu systemu trwała od godziny 13:00 do 16:00. Niestety cron po ponownym uruchomieniu Serwera nie wykona zadania. Z pomocą przychodzi nam anacron który odpala zadanie po ponownym uruchomieniu systemu. Przykładowy wpis w anacrontab: #Po rozruchu uruchomi się komenda backupująca z 15 minutowym #opóźnieniem 1 15 test.daily /bin/sh /home/sathiya/backup.sh
Cron vs Anacron CRON ANACRON Minimalny przedział czasowy to minuta. Jedyny dostępny przedział to raz na dzień. Cron może być wykorzystany przez każdego użytkownika systemu. Anacron może być wykorzystany tylko przez administratora. Działanie Cron przewiduje jedynie 100% „uptime” czyli 24/7. Jeżeli ustalone zadanie miało być wykonane podczas przerwy w działaniu systemu to zadanie nie zostanie wykonane. Anacron wykonuje zadania nawet jeżeli dojdzie do przerwy w działaniu systemu. Zadania zostaną wykonane po uruchomieniu systemu. Stosowany w przypadkach gdy liczy się duża precyzja wykonania zadania w czasie. Stosowany kiedy zadanie ma być wykonane a dokładny czas wykonania nie jest tak bardzo istotny. Sprawdza się na wszelakich serwerach. Używany częściej na desktopach i komputerach przenośnych.
Podsumowanie Cron znacznie ułatwia administrowanie zadaniami w systemach unixowych poprzez ich automatyzację w czasie. Niestety funkcjonalność cron przewiduje jedynie nieprzerwaną pracę urządzenia na którym jest wykorzystywany. Dzięki anacron można uzupełnić funkcjonalność cron o możliwość wykonania zadań nawet jeżeli nastąpi przerwa w działaniu urządzenia. Uruchamiając anacron przy starcie systemu umożliwimy mu wykonanie wszystkich czynności, których cron nie zdołał wykonać, może być przydatny zwłaszcza przy zadaniach typu weekly, monthly. W celu zdefiniowania zadań anacron należy odpowiednio przygotować plik anacrontab.