dla początkujących
Zobacz w:
Cron
Piotr Machej
łyszeliście o człowieku zwanym Phileas Fogg? Ten Jak to działa?
angielski dżentelmen, członek londyńskiego klubu Cron jest demonem (przez cały czas działa w tle) urucha-
Reforma, to bohater słynnej powieści Juliusza Ver- mianym zwykle podczas startu systemu. Program ten zaraz
Sne'a zatytułowanej W 80 dni dookoła świata. Już po uruchomieniu przeszukuje szereg plików konfiguracyj-
w pierwszym rozdziale książki, gdy przyjmuje nowego słu- nych, a następnie ładuje je do pamięci. Pliki te to kolejno:
żącego w swoim domu przy Savile Row, możemy zoriento- /etc/crontab, pliki znajdujące się w katalogu /etc/cron.d/
wać się, że człowiek ten przywiązuje wielką wagę do punk- oraz pliki w katalogu /var/spool/cron/. Pliki w tym ostat-
tualności. nim katalogu (/var/spool/cron/ ) powinny mieć nazwy
No dobrze, ale co ma to wspólnego z Linuksem, zapy- odpowiadające nazwom użytkowników zawartym w pliku
tacie. Ano ma. W Linuksie mamy takiego służącego, od któ- /etc/passwd (w ten sposób określa się, do kogo należy plik).
rego możemy wymagać wykonywania zadań z dokładno- Wszystkie pliki konfiguracyjne zawierają informacje, jakie
ścią co do minuty. Dokładnie tak, jak wymagał tego Phileas zadania mają być wykonane o zadanych porach (format
Fogg od Jeana Passepartout. Służący ten nazywa się Cron plików crontab opisany jest w rozdziale Sposób obsługi).
i został stworzony do zarządzania wykonywaniem zadań Działający Cron co minutę sprawdza, czy ma do wyko-
i programów. W niniejszym artykule skupimy się na jednej nania jakieś zadania. Jeśli zostanie uruchomione jakieś
z wersji Crona (jest ich więcej), stworzonej przez Paula polecenie, jego wyjście jest przesyłane pocztą e-mail na
Vixie (z tego powodu jest zwana Vixie Cron). adres właściciela pliku konfiguracyjnego (można też okre-
ślić innego adresata listu poprzez zdefiniowanie w pliku
Przykład użycia zmiennej środowiskowej MAILTO).
Gdy rano zwlokłem się z łóżka, miałem dziwne przeczucie, Dodatkowo, Crontab sprawdza co minutę, czy czas
że coś jest nie tak. Szybki rzut okiem na zegarek utwierdził modyfikacji katalogów z plikami konfiguracyjnymi lub
mnie w tym przekonaniu było już wczesne przedpołu- samego pliku /etc/crontab uległ zmianie. Jeśli tak się stało, to
dnie. No tak, zagapiłem i nie nagrałem kolejnego odcinka sprawdza, który dokładnie plik został zmieniony i wczytu-
serialu mojej ukochanej. Nic to wieczorem będzie powtór- je go ponownie do pamięci. Z tego powodu nie ma potrze-
ka. Usiadłem przy komputerze i od razu ustawiłem Crona, by restartowania demona Cron po modyfikacji plików kon-
aby wieczorem na pewno nagrał film. Przy okazji spraw- figuracyjnych, ale do edycji plików należy wykorzystywać
dziłem pocztę. No tak, pierwszy list to przypomnienie, że jedynie program Crontab, który dba o odpowiednie usta-
dzisiaj kończy mi się bilet sieciowy. O, i jeszcze jeden za wienie daty modyfikacji katalogu.
dwa dni urodziny kumpla. Kochany Cron znów się przy- Warto zauważyć, że zwykle tworzone są dodatkowe
dał. Całkiem użyteczny jest ten program na serwerze pil- katalogi, z których korzysta Cron. W przypadku Auroksa
nuje mi, aby wszystkie usługi działały (sprawdza je co dzie- są one tworzone przez instalację pakietu crontabs, zawie-
sięć minut, a jak któraś nie działa, to uruchamia od nowa), rającego również domyślny plik /etc/crontab. Katalogi te to
a w domu przypomina mi o ważnych terminach. No, muszę kolejno: /etc/cron.hourly/, /etc/cron.daily/, /etc/cron.weekly
lecieć do miasta. Ustawię jeszcze tylko znajomemu budze- oraz /etc/cron.monthly/. Umieszczone w nich pliki urucha-
nie na rano. Na pewno się ucieszy. Dla Crona codzien- miane będą z pomocą programu run-parts odpowiednio co
ne wysyłanie o 7:00 SMS-a na bramkę to fraszka. A może godzinę, dzień, tydzień i miesiąc. Program run-parts rów-
zmienić na 5:00? Nieee, nie będę wredny. nież jest zawarty w pakiecie crontabs Auroksa.
Instalacja
O autorze:
Pakiety z programem Cron znajdują się w każdej dystrybu-
Autor zakończył studia zaoczne na V roku Informatyki na
cji. Zwykle mają nazwy cron lub vixie-cron. Zawierają one
Politechnice Opolskiej. Z Linuksem (i ogólnie systemami
demona Crond oraz program Crontab, służący do edycji
uniksowymi) ma styczność od wielu lat. Obecnie admi-
plików konfiguracyjnych. Oprócz tego może być przydat-
nistruje siecią blokową złożoną z dziesięciu komputerów.
Kontakt z autorem: autorzy@linux.com.pl. ny pakiet crontabs, zawierający podstawowy plik konfigu-
racyjny (/etc/crontab) oraz program run-parts.
44 luty 2004
cron
Pierwsza z tych linii pokazuje, że demon Cron (crond)
Anacron
działa. Druga z nich to nasze polecenie. Jeśli nie pojawi
Nie zawsze potrzebujemy dokładności, którą oferuje nam
się linia podobna do pierwszej, musimy sami postarać
Cron. Jeśli zadowala nas wykonywanie zadań z dokładno-
się o uruchomienie demona. Możemy tego dokonać tylko
ścią co do dnia lub tygodnia, może nas zainteresować Ana-
z konta użytkownika root, więc należy zalogować się na to
cron.
konto lub skorzystać z polecenia su-. Następnie poleceniem
Narzędzie to jest szczególnie przydatne na komputerach,
which crond sprawdzamy, gdzie znajduje się plik wyko-
które nie są włączone przez cały czas. Anacron po urucho-
nywalny (w Auroksie jest to plik /usr/sbin/crond). Teraz
mieniu komputera sprawdza, czy w kolejce oczekują zadania,
możemy już uruchomić go: /usr/sbin/crond. Program auto-
które powinny zostać wykonane, a jeśli tak, to je uruchamia.
matycznie przejdzie w tło nie musimy dodawać przy
Cron w takiej sytuacji zachowuje się inaczej jeśli komputer
o określonej porze (wyznaczonej na wykonanie zadania) jest wywołaniu znaku &.
wyłączony, to zadanie to po prostu nie zostanie wykonane.
W Auroksie zamiast powyższej metody możemy rów-
Anacron i Cron mogą pracować równolegle na tym samym
nież użyć innego sposobu. Polecenie /etc/rc.d/init.d/
komputerze. Podobnie jak Cron, Anacron zwykle instalowany
crond status zwróci nam informację, czy Cron jest urucho-
jest podczas instalacji dystrybucji. Jeśli nie został zainstalowa-
miony. Jeśli jest wyłączony, możemy go uruchomić polece-
ny, możemy dokonać tego ręcznie, np. w Auroksie pakiet ana-
niem /etc/rc.d/init.d/crond start.
cron znajduje się na pierwszej płycie CD z dystrybucją.
Zwykle nie będziemy chcieli uruchamiać Crona ręcz-
Anacron korzysta z danych zapisanych w pliku /etc/anacrontab.
nie. Najlepiej, jeśli będzie uruchamiał się podczas startu
Jego składnia jest znacznie prostsza niż składnia pliku /etc/
systemu. Jeśli instalowaliśmy go podczas instalacji dystry-
crontab. Kluczowa linia ma postać:
bucji, to najpewniej właśnie tak jest. W innym przypadku
okres opóznienie identyfikator polecenie
powinniśmy dodać go do skryptów startowych. W Auroksie
najprościej możemy dokonać tego uruchamiając program
Jeśli od ostatniego wykonania polecenia upłynął już czas
ntsysv, a następnie zaznaczając na liście pozycję crond.
większy niż liczba dni określona w polu okres, to po licz-
bie minut wskazanych w polu opóznienie następuje ponow-
Sposób obsługi
ne wykonanie polecenia. Pole identyfikator wykorzystywa-
Mamy już zainstalowanego i uruchomionego Crona
ne jest do zidentyfikowania konkretnego zadania w komu-
i wiemy, jak działa. Pora na naukę wydawania poleceń
nikatach Anacrona (można je znalezć przykładowo w pliku
/var/log/cron). naszemu służącemu. W tym celu zapoznamy się z domyśl-
W pliku /etc/anacrontab możemy również definiować
nym plikiem /etc/crontab i przeanalizujemy jego zawartość
zmienne środowiskowe analogicznie, jak możemy to robić
(przedstawiona jest na Listingu 1).
w pliku /etc/crontab (bliższy opis w rozdziale Sposób obsługi).
Demon At
W przypadku dystrybucji Aurox, jeśli z jakiegoś powodu
Omawiając Crona trudno nie wspomnieć o innym demonie,
nie zainstalowaliśmy wspomnianych pakietów podczas
zwanym At. Również on pozwala na wykonywanie zadań
instalacji dystrybucji, możemy zainstalować je teraz. Znaj- o określonej porze. Różnica polega na tym, że Cron wykonu-
dują się one na pierwszej płycie z dystrybucją. W celu insta- je zlecone zadania okresowo, a At tylko jednorazowo. Oprócz
lacji, po wejściu do katalogu z pakietami, wykonujemy stan- tego, At ma jeszcze bardziej skomplikowany system określa-
nia czasu niż Cron. Z drugiej strony, ten sam termin można
dardowe polecenie:
opisać na wiele różnych sposobów, zależnie od tego, jaki
system preferujemy.
S
rpm -Uvh vixie-cron-3.0.1-74.i386.rpm
Przykładowo, możemy wydać polecenie at now + 5min. Po
crontabs-1.10-5.noarch.rpm
wciśnięciu klawisza [Enter] pojawi się znak zachęty at>, po
którym możemy wpisać polecenie do wykonania. Po kolejnym
Jeśli mamy już zainstalowanego Crona, możemy zająć się
wciśnięciu [Enter] możemy wpisać następną komendę lub
jego uruchamianiem.
zakończyć wpisywanie wciskając klawisze [Ctrl]+[d]. Podane
komendy znajdą się w kolejce (możemy ją przeglądać pole-
Uruchamianie
ceniem atq) i zostaną wykonane za 5 minut. Inne przykłado-
Zacznijmy od sprawdzenia, czy Cron jest już uruchomiony. we określenia czasu to 10am Jan 4 2004 (10:00 rano, 4 stycz-
nia 2004 roku) czy 7pm + 5 days (za pięć dni o 19:00). Jeśli
Możemy tego dokonać przykładowo poleceniem ps -aux |
mamy wątpliwości co do ustawienia czasu, zawsze możemy
grep cron. Jeśli demon Cron działa, polecenie to powinno
skorzystać z któregoś z interfejsów graficznych (np. Webmin
zwrócić wynik podobny do poniższego:
lub VCron).
Jeśli chcemy zrezygnować z jakiegoś zadania ocze-
root 942 0.0 0.2 1436 572 ?
kującego w kolejce, możemy je usunąć poleceniem atrm
S Dec130: 00 crond
numer _ zadania.
gerard 2456 0.0 0.2 3824 608 pts/1
Wynik zwrócony przez wykonane zadania zostanie
S 01:22 0:00 grep cron
wysłany listem e-mail do użytkownika, który je zlecił.
www.linux.com.pl 45
dla początkujących
Zobacz w:
Ostatnie pole, polecenie, wskazuje zadanie, jakie ma
być wykonane. Może to być nazwa skryptu lub progra-
mu, jak również pełne polecenie, takie jakie wpisaliby-
śmy w linii komend. Jeśli w polu tym użyjemy znaku pro-
centu (%), to zostanie on potraktowany jako znak nowej
linii, a wszelkie dane za pierwszym takim znakiem zosta-
ną przesłane na standardowe wejście komendy. Może
łatwiej będzie to objaśnić na podstawie przykładu. Jeśli
w polu polecenie wpiszemy mail -s "List okresowy"
gerard%Gerard,%%Ja tylko testuję Crona%, to do użyt-
kownika gerard zostanie wysłany list zatytułowany List
okresowy" (dzięki działaniu polecenia mail -s List okre-
sowy " gerard). W treści tego listu będzie znajdować się
tekst umieszczony po pierwszym znaku % :
Rysunek 1. VCron pozwala również na zarządzanie zadaniami
Gerard,
dla demona At, ale jest znacznie skromniejszy od Webmina czy
KCrona
Ja tylko testuję Crona
Format plików crontab
Plik zaczyna się deklaracją kilku zmiennych środowisko- Jak widać, pozostałe znaki % zostały zamienione na znaki
wych. Pierwsza linia określa, jaka powłoka (SHELL) zosta- końca linii.
nie użyta do wykonywania poleceń. Domyślnie jest to Czasem możemy nie chcieć otrzymywać wyniku działa-
powłoka /bin/sh, ale w naszym pliku wybraliśmy powło- nia polecenia. W takim przypadku możemy albo przekiero-
kę Bash /bin/bash. Druga linia zawiera deklarację ście- wać wyjście do pliku, albo też posłać je w pustkę. W pierw-
żek dostępu (PATH), w których Cron będzie szukał progra- szym przypadku stosujemy w polu polecenie konstrukcję:
mów do wykonania, jeśli podamy tylko nazwę programu
(bez katalogu). Następna zmienna środowiskowa (MAILTO) komenda >> nazwa_pliku
wskazuje użytkownika, który otrzyma list z wydrukiem
wyniku działania programu. Domyślnie list taki wysyła- W drugim, gdy nie interesuje nas w ogóle wynik działania
ny jest do użytkownika, do którego należy plik konfigu- programu, możemy skorzystać z polecenia:
racyjny, ale dzięki ustawieniu tej zmiennej można wskazać
dowolny inny adres. Ostatnią zmienną środowiskową usta- komenda > /dev/null
wianą w domyślnym pliku jest zmienna HOME, wskazują-
ca na katalog domowy. Nie uchroni nas to jednak przed czytaniem ewentualnych
We własnych plikach konfiguracyjnych możemy zdefi- komunikatów błędów. Aby tego uniknąć, należy jeszcze
niować te i inne potrzebne nam zmienne środowiskowe. dodać 2>&1 na końcu wymienionych wyżej linii (a więc
Jeśli zaś zadowalają nas ustawienia domyślne, to deklaracje przykładowo komenda > /dev/null 2>&1).
tych zmiennych możemy pominąć. Polecenie run-parts, użyte w domyślnym pliku /etc/
Linie zaczynające się znakiem # są liniami komentarzy crontab (Listing 1), powoduje uruchomienie kolejno wszyst-
możemy w nich opisywać, do czego służą poszczegól- kich plików wykonywalnych znajdujących się we wskaza-
ne polecenia. nym katalogu.
Wreszcie dotarliśmy do tego, co w plikach crontab jest
najważniejsze. Są to informacje, jakie polecenia mają być
Listing 1. Domyślna zawartość pliku /etc/crontab
wykonywane o zadanych porach. Każda z linii określają-
w Auroksie
cych zadanie do wykonania składa się z siedmiu kolumn.
Oznaczmy je w następujący sposób:
SHELL=/bin/bash
minuta godzina dzień_miesiąca miesiąc dzień_tygodnia PATH=/sbin:/bin:/usr/sbin:/usr/bin
użytkownik polecenie MAILTO=root
HOME=/
Pięć pierwszych pól pozwala nam wskazać, kiedy wyko- # run-parts
nywane będzie polecenie. Pole użytkownik określa, z pra- 01 * * * * root run-parts /etc/cron.hourly
wami jakiego użytkownika ma być wykonane polecenie. 02 4 * * * root run-parts /etc/cron.daily
Nie występuje ono w plikach umieszczonych w katalogu 22 4 * * 0 root run-parts /etc/cron.weekly
/var/spool/cron/, gdyż są one przypisane do konkretnych 42 4 1 * * root run-parts /etc/cron.monthly
użytkowników.
46 luty 2004
cron
Pierwsza z nich to:
01 * * * *
Ustawione jest jedynie pole minuta. Tak więc zadanie
będzie wykonane o minucie 01 każdej godziny, każdego
dnia i każdego miesiąca, czyli po prostu co godzinę.
Drugi przykład jest nieco inny:
02 4 * * *
Tym razem ustalone mamy pola minuta i godzina. Czyta-
my więc, że zadanie będzie wykonywane o godzinie 4:02
(minuta 02, godzina 4) codziennie (pozostałe pola mają
wartość *, czyli pełny zakres).
Rysunek 2. Aktywność dysków o godzinie 4.00 w nocy wynika
Analiza dwóch ostatnich linii nie powinna już sprawić
właśnie z uruchamiania różnych zadań przez Crona
kłopotów: 22 4 * * 0 to godzina 4:22 w każdą niedzielę,
Definicje czasu natomiast 42 4 1 * * to godzina 4:42 każdego pierwsze-
Jak już wspomniałem, najważniejsze w pliku crontab są go dnia miesiąca.
pola określające czas wykonania zadania. Mogą one przyj- Warto zwrócić jeszcze uwagę na fakt, że dzień wywo-
mować następujące zakresy: łania komendy można wskazać aż w dwóch polach: zarów-
no w dzień_miesiąca, jak i w dzień_tygodnia. Jeśli podamy
" minuta 0-59 wartość (różną od *) w obu tych polach, to wskazane pole-
" godzina 0-23 cenie zostanie wykonane w momencie, w którym aktual-
" dzień_miesiąca 1-31 na data będzie się zgadzać z którymkolwiek z tych dwóch
" miesiąc 1-12 pól. Przykładowo, jeśli określimy czas jako 10 5 3,7 * 4, to
" dzień_tygodnia 0-7 polecenie zostanie wykonane o godzinie 5:10 (pola pierw-
sze i drugie) trzeciego i siódmego dnia (pole trzecie) każde-
Bliższego wyjaśnienia wymaga chyba tylko zakres pola go miesiąca (pole czwarte), a oprócz tego w każdy czwar-
dzień_tygodnia. Jak wiadomo, w tygodniu mamy siedem tek (pole piąte).
dni, ale pole to może przyjmować osiem wartości. Dzieje się
tak, gdyż zarówno wartość 0, jak i 7, odpowiadają niedzieli. Modyfikacja pliku konfiguracyjnego
Dalej mamy odpowiednio poniedziałek (1), wtorek (2) itd. Dość teorii, czas na praktykę. Wiemy już wszystko, co
W każdym z tych pól możemy wpisać gwiazdkę (*), nam jest potrzebne, więc możemy z poziomu zwykłe-
która odpowiada całemu zakresowi od pierwszej do ostat- go użytkownika stworzyć własny plik crontab. Jak już
niej możliwej wartości. wcześniej wspomniałem, należy w tym celu korzystać
Nie jesteśmy ograniczeni do pojedynczych wartości. z programu Crontab (wyjaśnienia w rozdziale Jak to
Jeśli przykładowo chcemy, aby zadanie było wykonywa- działa?).
ne od godziny 3 do godziny 8, to w polu godzina możemy Zacznijmy od sprawdzenia, czy mamy już jakiś plik
użyć zakresu 3-8. Oprócz tego możemy korzystać z list war- konfiguracyjny. Służy do tego polecenie:
tości. Dzięki temu możemy wskazać, że zadanie ma być
wykonywane we wtorek, czwartek i niedzielę, przypisu-
jąc polu dzień_tygodnia wartość 2,4,7. Obie te metody
możemy łączyć pole dzień_miesiąca może wyglądać
przykładowo tak: 3,7,10-14,18-20,28. W takim przypadku
zadanie będzie wykonywane w dniach: 3, 7, 10, 11, 12, 13,
14, 18, 19, 20, 28 danego miesiąca.
Stosując zakresy możemy też wyznaczyć krok, o jaki ma
wzrastać wartość. Jeśli przykładowo chcemy uruchamiać
zadanie od godziny 10 do 22 co trzy godziny, to możemy to
zapisać w polu godzina jako: 10-22/3. Jest to znacznie krót-
szy zapis niż odpowiadający mu 10,13,16,19,22. Jeśli zada-
nie ma być wykonywane po prostu co dwa dni, to możemy
w polu dzień_miesiąca zastosować zapis */2.
Tak więc przeanalizujmy wartości z naszego przykła- Rysunek 3. Gcrontab pozwala w wygodny sposób wprowadzać
du z Listingu 1. nawet zakresy liczb do pliku crontab
www.linux.com.pl 47
dla początkujących
Zobacz w:
Przykłady wpisów w pliku crontab
Wyłącza komputer o 23:00 (ostrzega 5 minut wcześniej). Polecenie
to powinno być w pliku crontab użytkownika root lub innego, mają-
cego dostęp do polecenia shutdown:
55 22 * * * /sbin/shutdown -h +5
Wykonuje kopię bezpieczeństwa plików z pracą dyplomową
w dni powszednie o 16:00:
S
00 16 * * 1-5 tar cvzf ~/archiwa/
dyplom.tgz ~/dyplom/
Co 15 minut wywołuje skrypt sprawdzający połączenie:
S
*/15 * * * * /usr/bin/
Rysunek 4. Informacji o opcji @reboot na próżno szukać
test.polaczenia
w manualach dostępnych w niektórych dystrybucjach
Wysyła Autorowi życzenia urodzinowe 4 stycznia o 17:35:
(np. w Auroksie)
S
35 17 04 01 * mail -s Sto
crontab -l
S
lat! gerard@amber.eu.org%No i znów się
postarzałeś!%
Jeśli uzyskamy napis no crontab for nazwa_użytkownika,
W każdą niedzielę o 18:00 przypomina, że to już koniec weekendu:
to znaczy, że nasz plik konfiguracyjny jeszcze nie istnieje.
Dla przypomnienia, jest to plik o nazwie /var/spool/cron/
S
00 18 * * 7 echo Jutro znów do
nazwa_użytkownika.
pracy/szkoły! Koniec lenistwa!
W celu edycji naszego pliku crontab możemy użyć
W każdą środę nagrywa transmisję z zawodów jezdzieckich na
polecenia:
Eurosport:
crontab -e
S
00 22 * * 3 mencoder -tv on:
S
driver=v4l:input=2:width=384:height=288:
S
norm=pal:channel=14 -o /mnt/filmy/
S
eurosport.avi -ovc lavc -lavcopts
Uproszczone oznaczenia czasu
vcodec=mpeg4 -endpos 3600 > /dev/null 2>&1 &
W niektórych przypadkach możemy uprościć składnię opi-
saną w rozdziale Definicje czasu. Zamiast pięciu pól okre-
Od 17. dnia miesiąca przez 3 dni przypomina, że kończy się waż-
ślających czas, możemy użyć jednego z ośmiu specjalnych
ność biletu sieciowego:
ciągów:
S
15 10 17,18,19 * * echo 20. dnia
S
miesiąca kończy Ci się sieciówka!
" @reboot wykonuje polecenie raz, przy uruchomieniu
Idz kupić!
demona Cron;
" @yearly wykonuje polecenie co roku, odpowiada war-
tości 0 0 1 1 * ;
" @annually to samo, co @yearly;
Zanim to jednak zrobimy, warto ustawić sobie odpowied-
" @monthly wykonuje polecenie co miesiąc, odpowiada
ni edytor. Jeśli już potrafimy pracować z Vi, to nie musimy
wartości 0 0 1 * * ;
nic zmieniać (ten edytor zwykle uruchamia się domyślnie).
" @weekly wykonuje polecenie co tydzień, odpowiada
wartości 0 0 * * 0 ; Jeśli jednak wolimy inny, powinniśmy wykonać polecenie
" @daily wykonuje polecenie codziennie, odpowiada
export EDITOR=nazwa_edytora, przykładowo export EDITOR=
wartości 0 0 * * * ;
mcedit. Gdy już to zrobimy, możemy skorzystać z polece-
" @midnight to samo, co @daily;
nia crontab -e w celu zmodyfikowania naszego pliku. Wpi-
" @hourly wykonuje polecenie co godzinę, odpowiada
sujemy do niego odpowiednie wartości (zgodnie z infor-
wartości 0 * * * * .
macjami z rozdziałów Format plików crontab oraz Defini-
cje czasu). Przypominam, że w prywatnych plikach crontab
Szczególnie interesująca jest wartość @reboot, pozwalająca
nie korzystamy z pola użytkownik. Przykładowo, możemy
zwykłym użytkownikom systemu uzyskać podobną funkcjonal-
wpisać sobie linię postaci:
ność, jaką ma root, dodając zadania do skryptów startowych.
Jeśli więc zależy nam, aby jakieś programy uruchamiały się
zaraz po starcie systemu, to możemy je dodać do pliku cron- */5 * * * * echo "Minęło pięć minut"
tab używając w polu czasu ciągu @reboot.
48 luty 2004
cron
Webmin
Jeśli nie mamy jeszcze zainstalowanego Webmina, możemy
pobrać go ze strony domowej. Instalacja nie powinna spra-
wić problemów. Jeśli będziemy chcieli zainstalować Webmina
prosto z pakietu (webmin-1.121-1.noarch.rpm w chwili pisania
artykułu) w Auroksie , to może być konieczna chwilowa zmiana
zawartości plików /etc/issue oraz /etc/issue.net na Red Hat
Linux release 9.0 . Wynika to z faktu, że Webmin nie wspie-
ra Auroksa, natomiast doskonale wspiera Red Hata, z którego
Aurox się wywodzi. Po zainstalowaniu pakietu możemy przy-
wrócić wspomnianym plikom poprzednią treść.
Z Webminem łączymy się za pomocą przeglądarki inter-
netowej (przykładowo Mozilla) podając adres http://localhost:
10000/. Następnie należy podać nazwę użytkownika root
i jego hasło. W sekcji System możemy znalezć odnośnik Har-
Rysunek 5. Edycja pliku crontab z użyciem Webmina
monogram zadań crona. Po jego wybraniu ukazuje nam się
spis aktualnie istniejących zadań, które zostały wyznaczone
Po wyjściu z edytora powinniśmy zobaczyć napis crontab:
do wykonania. Wybierając nazwę zadania możemy sprawdzić
installing new crontab, a następnie co 5 minut (a dokład- dokładniejsze ustawienia.
niej o każdej liczbie minut będącej wielokrotnością pięciu Możemy również skorzystać z odnośnika Utwórz nowe
zadanie dla crona. Tutaj możemy w łatwy sposób zaznaczyć
5, 10, 15 itd.) powinniśmy dostawać list o treści Minęło
terminy wykonywania konkretnych zadań.
pięć minut.
Zacznijmy od wypełnienia pola Uruchom zadanie crona
Jeśli podczas wpisywania linii popełniliśmy oczywisty
jako. Możemy w nie wpisać nazwę użytkownika, z którego
błąd (przykładowo zabrakło jednego pola czasu), Crontab
prawami ma być wykonane zadanie (jeśli chcemy, to możemy
poinformuje nas o tym i zaproponuje poprawienie błędów.
tę nazwę wybrać z rozwijalnej listy ukazującej się po wciśnię-
Gdy się na to zgodzimy (na pytanie Do you want to retry the
ciu przycisku z trzema kropkami). Pole Aktywne zostawia-
same edit? odpowiadając y), wrócimy do edycji pliku. Jeśli
my zaznaczone na Tak. Następnie w polu Polecenie wpisuje-
z kolei zrezygnujemy z poprawienia błędów (odpowiada-
my treść polecenia, które chcemy uruchamiać. Jeśli chcemy
jąc n), zawartość naszego pliku crontab nie zostanie zmie-
przekazać jakieś dane na wejście polecenia, możemy to
niona, a porzucona przez nas błędna treść zostanie zapisa- wpisać w kolejnym polu. Są to dane, które normalnie wpisy-
na w pliku tymczasowym. O nazwie tego pliku zostaniemy walibyśmy po pierwszym znaku procentów (%). W polu tym
nie musimy stosować znaków % możemy po prostu wciskać
powiadomieni komunikatem o treści podobnej do crontab:
[Enter] w celu uzyskania nowej linii.
edits left in /tmp/crontab.3730.
W linii Kiedy uruchomić musimy zdecydować, czy sko-
Czasem wygodniej jest nam przechowywać zawar-
rzystamy z uproszczonej listy wyboru (patrz ramka Uprosz-
tość pliku konfiguracyjnego w naszym katalogu. Jeśli
czone oznaczenia czasu), czy też wskażemy dokładne pory
chcemy pózniej w łatwy sposób przenieść tę zawar-
wykonania zadania (Run at times selected below...). W pierw-
tość do pliku crontab, możemy po prostu wywołać
szym przypadku (Run on selected shedule...) nasze zadanie
polecenie:
ogranicza się do wybrania z listy odpowiedniej częstotliwości
wykonywania zadania. W drugim wskazujemy odpowiadają-
crontab nazwa_pliku
ce nam minuty, godziny, dni miesiąca, miesiące i dni tygodnia.
Każde z tych pól może mieć wartość Wszystkie (odpowiada to
W takim przypadku treść pliku zostanie skopiowana do * w wersji tekstowej). Jeśli w którymś z pól chcemy zaznaczyć
więcej niż jedną wartość (przykładowo chcemy zaznaczyć
pliku /var/spool/cron/nazwa_użytkownika.
miesiące Styczeń, Maj i Lipiec), to po zaznaczeniu myszką
Do szybkiego usunięcia zawartości naszego pliku cron-
pierwszej wartości przytrzymujemy klawisz [Ctrl] i zaznacza-
tab służy polecenie:
my pozostałe wartości.
Gdy ustawienia już nas satysfakcjonują, wciskamy przy-
cisk Utwórz.
Interfejsy graficzne Z pomocą Webmina możemy również zarządzać dostę-
Wielu użytkowników Linuksa nie przepada za pracą w trybie pem użytkowników do zadań crona. Po wybraniu tego odno-
tekstowym i woli graficzne nakładki. Autorzy oprogramowania śnika zobaczymy niewielki formularz. Domyślnie zaznaczona
poszli im na rękę, dzięki czemu dostępnych jest szereg gra- jest pierwsza opcja Pozwól wszystkim. Jeśli chcemy ogra-
ficznych interfejsów do programu Crontab. Wymienić można niczyć dostęp do crona, wybieramy jedną z opcji: Pozwól
kilka z nich: KCron (dostarczany wraz z KDE), Vcron, Gcron- tylko wymienionym lub Zabroń tylko wymienionym, a następ-
tab, czy wreszcie prawdziwy kombajn Webmin. Osobiście nie wpisujemy w odpowiednim polu nazwy wybranych użyt-
najbardziej przypadł mi do gustu Webmin może dlatego, że kowników. Możemy też wcisnąć przycisk z trzema kropka-
już z niego korzystałem i wiem, że jest wygodny. mi i wybrać odpowiednich użytkowników z listy. Następnie
zatwierdzamy zmiany przyciskiem Zachowaj.
www.linux.com.pl 49
dla początkujących
Zobacz w:
KCron
KCron jest innym wygodnym interfejsem graficznym dla pro-
gramu Crontab. Jego wielką zaletą jest to, że jest dostarcza-
ny wraz z dystrybucją (jest częścią środowiska KDE). Jeśli
więc korzystamy z KDE, to KCron jest już w systemie. Jeśli
zaś jesteśmy szczęśliwymi użytkownikami GNOME, to nic nie
stoi na przeszkodzie, aby również skorzystać z tego progra-
mu. KCron znajduje się w pakiecie kdeadmin, jeśli więc nie
mamy go zainstalowanego, to konieczna będzie jego instala-
cja wraz z zależnościami (m.in. pakiety kdebase, kdelibs oraz
lm_sensors).
Po uruchomieniu programu z poziomu zwykłego użytkow-
nika uzyskujemy dostęp do naszego pliku crontab umiesz-
czonego w /var/spool/crontab/. W głównym oknie mamy do
wyboru pola Tasks oraz Variables. Pole Variables odpowiada
Rysunek 6. KCron zapewnia nam wygodny i przyjemny dla oka
za zmienne środowiskowe, natomiast pole Tasks to właściwe
interfejs
zadania do wykonania wraz z terminami.
Wskazując prawym przyciskiem myszy pole Tasks,
Administracja
a następnie wybierając z rozwiniętego menu opcję New, prze-
Domyślnie wszyscy użytkownicy mają możliwość korzysta-
chodzimy do tworzenia nowego zadania. Pierwsze pole to
nia z Crona. Nie zawsze jednak administratorowi musi to
komentarz dotyczący nowego zadania (w pliku crontab znaj-
odpowiadać. Wszystkich administratorów ucieszy z pewno-
dzie się tuż nad linią z zadaniem). W drugim polu, Program,
ścią fakt, że można w łatwy sposób określać, którzy użyt-
możemy wpisać treść polecenia lub nazwę skryptu do wyko-
kownicy mogą korzystać z Crona. Służą nam do tego dwa
nania. Możemy też skorzystać z przycisku Browse w celu
pliki /etc/cron.allow oraz /etc/cron.deny.
wskazania pliku programu, który chcemy wykonać. Pole Ena-
Jeśli istnieje plik cron.allow, użytkownik musi być
bled zostawiamy włączone, a Silent wyłączone (z Vixie Cron
działa niepoprawnie). Pozostaje nam wskazanie wybranych w nim wymieniony, aby móc korzystać z polecenia cron-
miesięcy, dni miesiąca, dni tygodnia, godzin i minut. Możemy
tab. Jeśli nie utworzymy pliku cron.allow, lecz stworzy-
skorzystać z pola Run every day, co spowoduje automatycz-
my plik cron.deny, to użytkownik nie może być w nim
ne zaznaczenie wszystkich wartości miesięcy, dni miesiąca
wymieniony, jeśli ma mieć możliwość korzystania z pole-
i dni tygodnia. Niestety brakuje znanej z Webmina możliwo-
cenia crontab. Gdy nie istnieje żaden z tych plików,
ści wybrania wartości @reboot. Zmiany zatwierdzamy przy-
dostępność polecenia crontab dla zwykłych użytkowni-
ciskiem OK.
ków zależy od konfiguracji konkretnego systemu (np. od
Jeśli nie odpowiada nam ustawienie jakiegoś zadania,
praw dostępu do plików i katalogów).
możemy je wskazać prawym przyciskiem myszy i wybrać
W obydwu plikach nazwy użytkowników podajemy po
opcję Modify. Pozwoli to na poprawienie ustawień korzystając
jednej w każdej linii.
z takiego samego okna, jak przy tworzeniu nowego zadania.
Analogicznie do zadań możemy dodać lub zmodyfiko-
wać zmienne środowiskowe. Wystarczy w polu Variables lub Zakończenie
na istniejącej zmiennej wskazać prawym przyciskiem myszki,
Nie ulega wątpliwości, że narzędzia typu Cron i Anacron
a następnie wybrać New lub Modify. W otwartym oknie wpisu-
są niezbędne w każdym systemie. Dbają one o wykony-
jemy (lub wybieramy z listy) nazwę zmiennej, a poniżej wpisu-
wanie okresowych czynności, przez co odciążają użyt-
jemy jej wartość. Pole Comment pozwala nam wpisać komen-
kownika i pozwalają mu zająć się sprawami, które rze-
tarz dotyczący tej zmiennej. Oczywiście pozostawiamy pole
czywiście wymagają jego uwagi. Pamiętać jednak należy,
Enabled zaznaczone, po czym wciskamy OK.
że Cron jest tylko narzędziem, więc wymaga odpowied-
Wszelkie zmiany, jeśli mają zacząć obowiązywać,
niej obsługi.
musimy zapisać wciskając klawisze [Ctrl]+[s].
Jeśli uruchomimy KCron z poziomu użytkownika root, to
będziemy mieli dostęp do plików crontab wszystkich użytkow-
W Sieci:
ników w systemie. Plik /etc/crontab ukryty jest pod pozycją
System Crontab.
" Around the World in eighty days:
http://jv.gilead.org.il/pg/80day/
" VCron:
crontab -r
http://www.linux-kheops.com/pub/vcron/
" Gcrontab:
Warto jeszcze wspomnieć o tym, że superużytkownik (root) http://www.arquired.es/users/aldelgado/proy/gcrontab/
" Webmin:
może zarządzać plikami crontab innych użytkowników.
http://www.webmin.com/
Wystarczy, że do powyżej opisanych wywołań programu
Crontab doda opcję -u nazwa_użytkownika.
50 luty 2004
Wyszukiwarka
Podobne podstrony:
2004 02 Distribution Comparison Test Intro2004 02 Aplety dla GNOME [Programowanie]Matematyka dyskretna 2004 02 Arytmetyka2004 02 16id 188Biuletyn PPP Elbląg 02 200402 założenia cyklu olimpijskiego 2001 2004PHP Co nowego Co nowego w piątej wersji PHP 02 20042004 01 Praca z OpenSSH [Administracja]więcej podobnych podstron