Często zdarza się, że część czynności systemowych wykonujemy w określonych odstępach czasu. Ponieważ część z nich czynności powtarzalne – jak np. aktualizacja systemu, odśmiecanie katalogów tymczasowych czy inne procesy konserwacji – możemy wykonywać automatycznie poprzez harmonogram.

Linuxowym i Unixowym odpowiednikiem harmonogramu zadań jest tzw. CRON, demon uruchamiający inne programy o określonych porach.

Konfiguracja

Konfiguracja CRON-a odbywa się poprzez kilka plików zwanych tableami CRON-a (crontab). Głównym plikiem konfiguracyjnym w tym oprogramowaniu jest plik, znajdujący się w katalogu /etc o nazwie crontab (/etc/crontab).

kurs bash skrypt linux skryptowanie sh programowanie cron crontab

Ponieważ plik ten zapisywać może wyłącznie super użytkownik, istotne jest aby przed edycją zwiększyć swoje uprawnienia, np. w następujący sposób:

# su -c „nano /etc/crontab”

Po każdorazowej zmianie tego pliku należy ponownie uruchomić demona CRON. W przypadku dystrybucji Gentoo Linux, zalecaną implementacją mechanizmu CRON jest pakiet Vixie-Cron, który możemy ponownie uruchomić w następujący sposób:

# su -c „/etc/init.d/vixie-cron restart”

Mimo zalecanego pakietu Vixie-Cron możemy zainstalować także demona CronD, który korzysta z takiego samego schematu crontab a program możemy zrestartować w następujący sposób:

# su -c „/etc/init.d/crond restart”

Po ponownym uruchomieniu demona CRON procesy wprowadzone poprawnie do tabeli harmonogramu (crontab) będą wykonywane o określonych porach.

Skrypty w Crontab

Aby dodać skrypt do tabeli crontab, musimy wykorzystać określonych schemat linii, która definiuje parametry uruchomieniowe programu, jak minuta, godzina, dzień tygodnia, dzień miesiąca, miesiąc, uprawnienia i komendę. Możliwe jest także uruchamianie skryptów i programów o w określonych odstępach czasu – np. co 10 minut (start_minuty/10), godzin (start_godzin/10).

Uruchamianie skryptu raz dziennie, o północy odbywa się poprzez dodanie następującej linii do pliku /etc/crontab:

0  0    *  *  *    root    /bin/bash <sciezka do pliku>

Skrypt zostanie więc uruchomiony z uprawnieniami super użytkownika root. Jak widzisz, interpreter skryptu zostaje podany w miejscu komendy, ponieważ jest on bezpośrednio odpowiedzialny za wykonanie skryptu.

Start co 10 minut

Wspomniałem już, że skrypty można wykonywać co 10,15,20 czy dowolną ilość minut. W tym celu do pliku crontab dopisujemy:

Skrypt uruchamiany co 5 minut

0/5  *    *  *  *    root    /bin/bash <sciezka do pliku>

 

Skrypt uruchamiany co 10 minut

0/10  *    *  *  *    root    /bin/bash <sciezka do pliku>

 

Skrypt uruchamiany co 30 minut

0/30  *    *  *  *    root    /bin/bash <sciezka do pliku>

 

Skrypt uruchamiany co 45 minut

0/45  *    *  *  *    root    /bin/bash <sciezka do pliku>

 

Start co 3 godziny

Uruchamianie skryptu co kilka godzin możemy wykonać również za pomocą CRON-a. W tym celu do pliku crontab dopisujemy:

Skrypt uruchamiany co 3 godziny

0  0/3    *  *  *    root    /bin/bash <sciezka do pliku>

 

Skrypt uruchamiany co 6 godzin

0  0/6    *  *  *    root    /bin/bash <sciezka do pliku>

 

Skrypt uruchamiany co 12 godzin

0  0/12    *  *  *    root    /bin/bash <sciezka do pliku>

 

Skrypt uruchamiany co 16 godzin

0  0/16    *  *  *    root    /bin/bash <sciezka do pliku>

 

Kilka innych przykładów

Wymienione powyżej przyłady to nie wszystkie umiejętności CRON-a.

Skrypt uruchamiany 5 minut po pełnej godzinie

5  *    *  *  *    root    /bin/bash <sciezka do pliku>

 

Skrypt uruchamiany o godzinie 13:30 w piątki

30  13    *  *  5    root    /bin/bash <sciezka do pliku>

 

Skrypt uruchamiany każdego 5-tego dnia kolejnego miesiąca, o 23:45 godzin

45  23    5  *  *    root    /bin/bash <sciezka do pliku>

 

Skrypt uruchamiany co 3 miesiąc, pierwszego dnia miesiąca, o północy godzin

0  0    1  0/3  *    root    /bin/bash <sciezka do pliku>

 

Skrypt uruchamiany co 5 minut z uprawnieniami określonego użytkownika, np. matheos

0/5  *    *  *  *    matheos    /bin/bash <sciezka do pliku>

 

Testuj

Tak jak nie polecam uruchamiania skryptów jako ROOT – w przciwieństwie do tego tutorialu – tak zupełnie odwrotnie zachęcam Cię do zabawy z harmonogramem CRON. Automatyzując część czynności systemowych zapewnisz sobie dodatkowe chwile ze znajomymi bądź rodziną, nie mówiąc już o zawodności ludzkiej pamięci.

M.M.