Procédure
Wiele czynności administracyjnych można zautomatyzować za pomocą skryptów Perla lub skryptów powłoki uruchamianych w regularnych odstępach czasu. Na przykład możesz mieć skrypt sprawdzający, czy dysk nie jest pełny, który uruchamia się raz na godzinę, aby poinformować Cię o ewentualnych problemach. Najpopularniejszym mechanizmem planowania poleceń w systemach Linux jest pakiet cron.
W Debianie pakiet cron jest częścią systemu bazowego i jest domyślnie uruchomiony.
Cron jest dostarczany z Debianem w dwóch celach:
Aby uruchamiać zadania systemowe codziennie/tygodniowo/miesięcznie.
Aby umożliwić użytkownikom konfigurowanie własnych zaplanowanych zadań.
Pakiet Cron automatycznie tworzy następujące katalogi:
/etc/cron.d /etc/cron.daily /etc/cron.hourly /etc/cron.monthly /etc/cron.weekly
Oprócz pierwszego, który jest specjalny, katalogi te pozwalają w prosty sposób zaplanować zadania dla całego systemu. Każdy skrypt umieszczony w nich będzie uruchamiany tak często, jak sugeruje jego nazwa.
Na przykład, jeśli umieścisz skrypt wewnątrz /etc/cron.daily, będzie on uruchamiany raz dziennie, każdego dnia.
Katalogi te są przydatne w niektórych przypadkach, ale jeśli trzeba bardziej dostosować czasy wykonywania, można to zrobić poprzez edycję pliku /etc/crontab, co wyjaśnimy dalej:
Normalnym sposobem korzystania z crona jest użycie polecenia crontab. Pozwala to na przeglądanie lub edycję pliku crontab, który jest plikiem dla każdego użytkownika zawierającym wpisy opisujące polecenia do uruchomienia i czas ich wykonania.
Aby wyświetlić plik, należy uruchomić następujące polecenie:
crontab -l
Użytkownik root może wyświetlić plik crontab dowolnego użytkownika, dodając -u username, na przykład :
crontab -u username -l
Format tych plików jest dość prosty do zrozumienia. Każda linia jest zbiorem sześciu pól oddzielonych spacjami.
Pola te to :
Liczba minut po godzinie (od 0 do 59)
Godzina w formacie czasu wojskowego (24 godziny) (od 0 do 23)
Dzień miesiąca (od 1 do 31).
Miesiąc (od 1 do 12).
Dzień tygodnia (0 lub 7).
Polecenie do wykonania.
Wyglądałyby one następująco:
* * * * Polecenie do wykonania - - - - - - - | | | | | | | | +-----> Dzień tygodnia (0-7) | | +-----------> Miesiąc (1 - 12) | +-----------------> Dzień miesiąca (1 - 31) | +-----------------------> Godzina (0 - 23) +-----------------------------> Minuty (0 - 59)
(Każde z pierwszych pięciu pól zawiera tylko liczby, ale można je pozostawić jako *, aby wskazać, że każda wartość jest akceptowalna).
Teraz, gdy widzieliśmy już strukturę, powinniśmy spróbować uruchomić kilka przykładów:
Edytuj plik crontab:
crontab -e
Spowoduje to uruchomienie domyślnego edytora na pliku crontab (tworząc go w razie potrzeby). Po zapisaniu pliku i wyjściu z edytora, crontab zostanie zainstalowany w systemie, chyba że zawiera błędy.
Domyślnym edytorem jest nano
Wpisz następujący tekst:
0 * * * * /bin/ls > /var/log/ls.log
Po zapisaniu pliku i wyjściu z edytora pojawi się komunikat :
crontab: instalowanie nowego crontab
Możesz sprawdzić, czy plik zawiera to, czego oczekujesz:
crontab -l
Tutaj powiedzieliśmy Cronowi, aby uruchamiał polecenie /bin/ls i przekierowywał dane wyjściowe polecenia do pliku /var/log/ls.log za każdym razem, gdy minuta jest równa 0, tj. będzie uruchamiał polecenie co godzinę, co godzinę.
Inne przykłady:
Uruchom polecenie "night" dziesięć minut po północy, każdego dnia
10 0 * * * /bin/night
Uruchamianie komendy "Monday" w każdy poniedziałek o 2 nad ranem
0 2 * * 1 /usr/local/bin/lundi
Jeśli chcesz uruchamiać coś bardzo regularnie, możesz użyć innej składni: zamiast używać samych liczb, możesz użyć zakresów lub zestawów.
Seria liczb wskazuje, że każdy punkt w tym zakresie będzie dostępny, więc jeśli użyjesz następującej linii, uruchomisz polecenie o godzinie 1, 2, 3 i 4:
* 1-4 * * /bin/command
Zestaw jest podobny, składa się z zestawu liczb oddzielonych przecinkami, każdy element na liście zostanie dopasowany. Poprzedni przykład wygląda następująco przy użyciu zestawów:
* 1,2,3,4 * * /bin/command
Zadaj je zespołowi LWS i społeczności. Odpowiedź zostanie opublikowana po moderacji.