Kod: Zaznacz cały
Spis treści:
0. Wstęp
1. Zasada działania
2. Zarządzanie wpisami
3. Budowa pliku crontab
4. /etc/cron.* i dodatki
Dcron, daemon crona używany w Slackware znacznie ułatwia wykonywanie cyklicznie powtarzających się operacji. W cronie umieszczone są takie zadania jak na przykład logrotate, updatedb czy rmmod. W cronie możemy umieścić inne ważne zadania do wykonania, dzięki czemu nie będziemy musieli pamiętać o rożnych czynnościach. Tyle tytułem wstępu, zabierzmy się do roboty.
1. Zasada działania
Cron po uruchomieniu siedzi cichutko w pamięci i co jakiś czas (co minutę) przeczesuje pliki crontab w poszukiwaniu wpisów dotyczących uruchamiania zadań. Pliki crontab z zadaniami do wykonania znajdują się w /var/spool/cron/crontabs i sa plikami-tablicami z zapisanym czasem wykonania oraz przypisanym poleceniem. Po zmianie którejkolwiek z tablic nie musimy restartować daemona, ten sam sobie rozpozna zmiany w plikach i je przeładuje.
2. Zarządzanie wpisami
Do zarządzania wpisami możemy posłużyć się poleceniem
Kod: Zaznacz cały
$ crontab
Do wylistowania zawartości własnej tablicy wykorzystamy opcję -l. Dzięki temu możemy się szybko zorientować cośmy tam powypisywali.
Jeżeli okazałoby się, że wpisaliśmy tam same pierdoły i chcemy się ich jak najszybciej pozbyć, proponuję użyć opcji -d. Spowoduje ona usunięcie pliku-tablicy z zapisanymi poleceniami.
Zamiast usuwać całą tablice z naszymi bazgrołami, możemy ją po prostu zamienić na inny plik z nowymi poprawnymi wpisami. Wystarczy podać jako parametr nazwę tego pliku i po sprawie. Możemy też jako parametr podać myślnik "-", wtedy zamiast z pliku crontab będzie czytał ze standardowego wejścia.
Jeżeli chcemy zastosować powyższe dla kogoś innego niż dla siebie, możemy podać po danej opcji nazwę tego użytkownika, dla którego będą przeprowadzone zmiany. W przypadku podania pliku lub "-" jako parametru, do zmiany użytkownika dla którego zostaną przeprowadzone modyfikacje, należy posłużyć się opcją -u [user]. Jednak w przypadku zmiany nie swoich ustawień powinniśmy być super użytkownikiem aby móc je wykonać. Bycie "ekstra" użytkownikiem niestety nie wystarcza w tym wypadku.
3. Zarządzanie wpisami
Skoro już wiemy jak edytować pliki tablic i jak wprowadzać zmiany, możemy przystąpić do opisania zawartości tych plików. Wpisy w plikach crontab zbudowane są z sześciu pól. Pierwsze pięć definiuje czas wykonania polecenia a ostatnie, szóste, definiuje polecenie które ma być o danym czasie wykonane. Pola opisujące czas mają następujące znaczenie, po kolei:
- minuta (0-59)
- godzina (0-23)
- dzień (1-31)
- miesiąc (1-12 lub nazwa, pierwsze 3 litery nazwy angielskiej)
- dzień tygodnia (zakres 1-7 lub nazwa, pierwsze 3 litery nazwy angielskiej)
Dane pole może zawierać (i często tak jest) gwiazdkę, co oznacza "wykonuj zawsze". Można używać zakresów liczb oddzielonych myślnikiem lub oddzielać poszczególne wartości oddzielone przecinkami. Dopuszczalne jest łączenie obu tych metod wskazywania wartości. Okresy czasu można również dzielić za pomocą slasha. Przykład:
Kod: Zaznacz cały
# polecenie będzie wykonywane co 5 minut
*/5 * * * * polecenie
# polecenie będzie wykonywane o pełnej godzinie oraz 20 i 40 minut po pełnej
0,20,40 * * * * polecenie
# polecenie będzie wykonywane co minute o godzinie 1 w nocy w dniach od 5 do 12 każdego miesiąca
* 1 5-12 * * polecenie
# polecenie będzie wykonywane o godzinie 12:53 co drugi dzień w miesiącu styczniu, kwietniu i od lipca do listopada włącznie
53 12 */2 1,4,7-11 * polecenie
Zapewne zauważyłeś drogi czytelniku katalogi o nazwach cron.hourly, cron.daily, cron.weekly i cron.monthly w katalogu /etc. Są tam umieszczone skrypty odpowiadające za wywołania ważnych i tych mniej ważnych zadań zadań dotyczących eksploatacji sytemu. Można tam oczywiście wrzucać dodatkowe z własnymi poleceniami do wykonania. Skrypty takie są zwykłymi plikami tekstowymi z umieszczonymi wewnątrz wywołaniami poleceń lub innych skryptów a także z kodem adekwatnym do wybranego interpretera. Poniżej przedstawiam przykładowy skrypt, który umieszczony na przykład w /etc/cron.daily/ będzie nam aktualizował czas systemowy:
Kod: Zaznacz cały
#!/bin/bash
ntpdate vega.cbk.poznan.pl
hwclock --systohc
Skrypty umieszczone w katalogach /etc/cron.* wywoływane są z pliku crontab roota:
Kod: Zaznacz cały
# Run hourly cron jobs at 47 minutes after the hour:
47 * * * * /usr/bin/run-parts /etc/cron.hourly 1> /dev/null
#
# Run daily cron jobs at 4:40 every day:
40 4 * * * /usr/bin/run-parts /etc/cron.daily 1> /dev/null
#
# Run weekly cron jobs at 4:30 on the first day of the week:
30 4 * * 0 /usr/bin/run-parts /etc/cron.weekly 1> /dev/null
#
# Run monthly cron jobs at 4:20 on the first day of the month:
20 4 1 * * /usr/bin/run-parts /etc/cron.monthly 1> /dev/null
Kod: Zaznacz cały
1> /dev/null
Ze względów bezpieczeństwa cron posiada pewne ograniczenia. Pliki crontab userów są ograniczone do 256 wpisów oraz linia nie może być dłuższa niz 1024 znaki wliczając znak końca linii.
==========================
Prosze o komentarze na temat tego co tam powyzej nawypisywałem