[ Pobierz całość w formacie PDF ]
.3.3 Demon cronJezeli uzytkownik chce wykonywac program w okreslonych godzinachalbo w regularnych odstepach czasu, umozliwia mu to demon cron.Dlakazdego uzytkownika demon ten zarzadza tablica, w ktorej sa zapisywane chwile,w ktorych maja byc uruchamiane zadane programy.Wynik wykonywanychpolecen oraz odpowiednie komunikaty o bledach sa wysylane poczta douzytkownika.Jezeli skrypt ma byc wykonany tylko raz w okreslonym czasie, toprace te mozna zlecic poleceniu at.Powtarzane w regularnych odstepach czasuwywolania procesow wymagaja umieszczenia odpowiedniej pozycji w tablicyuzytkownika demona cron (crontab).Do tego celu sluzy oddzielne poleceniecrontab.3.3.1 Realizacja zleconych zadan cyklicznychInformacje o tym, co i kiedy ma byc uruchomione, jest przekazywane docrona przez pozycje crontaba, ktore sa przechowywane w specjalnych plikach(np./etc/crontab).Pozycje crontaba powoduja wykonywanie przez cron polecen w okreslonychodstepach czasu.Kazda pozycja w pliku crontaba ma nastepujaca postac:min godz dzien_miesiaca miesiac dzien_tygodnia nazwa_uzytkownika cmdSpacje oddzielaja pola.Jednakze ostatnie pole, cmd, moze zawierac spacje(oznacza to, ze pole cmd sklada sie ze wszystkiego, co nastepuje za spacja popolu dzien_tygodnia).Pozostale pola nie moga zawierac spacji.Polenazwa_uzytkownika sluzy do wskazania uzytkownika zwiazanego zuruchamianym poleceniem.Pierwsze piec pol okresla czas, w ktorym cron powinien uruchomic cmd.Ichznaczenie wyjasnione jest w tabeli 4.1.Tabela 3.2 Pola w pozycjach crontaba.PoleZnaczenieZakresminMinuty po pelnejgodzinie0-59godzGodzina0-23 (0=polnoc)dzien_miesiacaDzien miesiaca1-31miesiacMiesiac1-12dzien_tygodniaDzien tygodnia1-7 (1=poniedzialek)Kazda pozycja w tych polach moze byc pojedyncza liczba, para liczb polaczonychmyslnikiem (taki zapis oznacza zakres), lista liczb lub zakresow oddzielonychprzecinkami lub gwiazdka (nazwa wieloznaczna reprezentujaca wszystkiemozliwe wartosci pola).Jesli pierwszym znakiem w linii jest #, cala pozycjazostanie potraktowana jako komentarz, bedzie wiec zignorowana przez cron.Jest to latwy sposob czasowego lub stalego usuniecia pozycji.Oto kilka przykladow pozycji crontaba:0,15,30,45 **** root (echo -n ‘’; date; echo „ ”)>/dev/console0,10,20,30,40,50 7-18 * * * /usr/lib/atrun0 0 * * * root find / -name „*.bak” -type f -atime +7 -exec rm{}\;0 4 * * * root /bin/sh /usr/adm/ckdsk 2>&1 >/usr/adm/disk.log0 2 * * * root /bin/sh /usr/adm/ckpwd 2>&1 |mail root30 3 * * 1 root /bin/csh /usr/lib/uucp/uu.weekly 2>&1 >/dev/null#30 2 * * 0,6 root /usr/lib/newsbin/news.weekendPierwsza pozycja powoduje wyswietlanie co pietnascie minut daty na konsoli;nalezy zauwazyc, ze kilka polecen jest ujetych w nawiasy w celu uruchomieniaich wspolnego wyjscia na konsole.(Technicznie oznacza to uruchomieniewszystkich zadan razem w jednym shellu potomnym).Druga pozycja uruchamiapolecenie /usr/lib/atrun codziennie miedzy 7:00, a 18:00, co dziesiecminut.Trzecia pozycja uruchamia polecenie find w celu odnalezienia wszystkichplikow.bak, z ktorych nie korzystano od siedmiu dni.Czwarta i piata pozycja uruchamia wskazane skrypty codziennie odpowiednio o16:00 i 2:00.W obu przypadkach w sposob jawny podano interpretator, ktory mawykonac dany skrypt.Gdy interpretator nie jest wskazany, uzywany jestinterpretator domyslny.W obu pozycjach dokonana jest zmiana przypisaniastandardowego strumienia wyjscia i standardowego strumienia bledow.Wpierwszym przypadku sa one kierowane do pliku, w drugim przesylane poczta douzytkownika root.Pozycja szosta powoduje wykonanie o 3:30 w poniedzialek przez shell C skryptuo nazwie uu.weekly, znajdujacego sie w katalogu /usr/lib/uucp.Nalezyzwrocic uwage na postac tego polecenia - mimo ze ma byc ono wykonane przezshell C, zmiana przypisania standardowych strumieni ma forme typowa dlainterpretatora Bourne’a.Ostatnia pozycja moglaby uruchomic polecenie/usr/lib/newsbin/news.weekend w sobote i niedziele rano, gdyby niebyla poprzedzona znakiem komentarza.Pole cmd powinno zawierac dowolne polecenia LINUX’a lub grupe polecen(oddzielonych odpowiednio spacjami).Kazda pozycja crontaba musi miescic siew jednej linii.Jesli w opisie polecenia znajduje sie znak procentu (%), cron bedzie traktowaldowolny nastepujacy po tym znaku tekst jako standardowe wejscie cmd.Dodatkowy znak procentu moze byc uzyty w celu rozdzielenia tekstu naposzczegolne linie.Na przyklad nastepujaca pozycja:30 11 31 12 * /etc/wall%Sczesliwego Nowego Roku%Duzousmiechuwywoluje 31 grudnia o godzinie 11:30 polecenie wall wykorzystuje nastepujacytekst:Szczesliwego Nowego RokuDuzo usmiechujako swoje standardowe wejscie.Przyklad ten pokazuje takze, jak croninterpretuje pola daty.Jesli wymieniono zarowno dzien miesiaca, jak i dzientygodnia, polecenie zostanie uruchomione tylko wtedy, gdy spelnione sa obawarunki, tj.zgadza sie zarowno dzien tygodnia, jak i dzien miesiaca.Demon cron sprawdza co minute, czy plik(i) crontab nie zostal zmieniony.Dlatego tez zmiany wprowadzane do schematu powinny byc w ciagu minutyuwzglednione.Polecenie cron uruchamia usluge cron bez opcji.Raz uruchomiony cronnigdy nie przerywa swego dzialania.Jest on zazwyczaj uruchamianyautomatycznie podczas ladowania systemu.3.3.2 Dodawanie pozycji crontaba.Kolejne pozycje sa tworzone za pomoca polecenia crontab w opisanydalej sposob.Po pierwsze, potrzebne pozycje sa zapisywane w pliku tekstowym(zazwyczaj przy uzyciu edytora).Nastepnie uruchamiane jest poleceniecrontab, majace za zadanie umiescic plik w obszarze kolejkowania crona.Naprzyklad, jesli uzytkownik larry wykona przytoczone nizej polecenie, plikmojcron zostanie zainstalowany jako:/usr/spool/cron/crontabs/larry:$ crontab mojcronJesli uzytkownik larry zainstalowal poprzednio jakies pozycje, zostana onezastapione przez te, ktore sa zawarte w pliku mojcron.Opcja -l polecenia crontab wyswietla wszystkie pozycje, a skierowanie jejstandardowego wyjscia do pliku pozwala ogladac je i edytowac:$ crontab -l > mojcron$ vi mojcron$ crontab mojcronOpcja -r usuwa wszystkie pozycje
[ Pobierz całość w formacie PDF ]