Crontab
Z Wikipedii
- Właściwy tytuł tego artykułu to crontab. Z powodu ograniczeń technicznych tytuł tego artykułu jest nieprawidłowy.
crontab - tabela programu Cron posiadająca specjalny format oraz nazwa programu służącego do jej edycji.
Program crontab wywoływany z linii poleceń z opcją -l wyświetla aktualną tabelę crona. Opcja -r usuwa ją, a -e pozwala na jej edycję.
Tabele cronu właściwe dla danych użytkowników znajdują się zwykle w katalogu /var/spool/cron/crontabs. Dodatkowa tabela systemowa jest umieszczona w pliku /etc/crontab. Od zapisów tam umieszczonych zależy sposób obsługi katalogów cron.* znajdujących się w katalogu /etc:
cron.hourly - skrypty wykonywane co godzinę cron.daily - skrypty wykonywane codziennie cron.weekly - skrypty wykonywane raz w tygodniu cron.monthly - skrypty wykonywane raz w miesiącu
W powyższych katalogach należy umieścić plik ze skryptem do wykonania.
Przykładowa tabela crontab (ze strony podręcznika: man 5 crontab) właściwa dla danego użytkownika:
# używaj /bin/sh do wywoływania komend. Nieważne co jest w /etc/passwd. SHELL=/bin/sh # przesyłaj wyjście do użytkownika paul MAILTO=paul # # uruchamiaj się 5 minut po północy, codziennie 5 0 * * * $HOME/bin/daily.job >> $HOME/tmp/out 2>&1 # uruchamiaj się od 2:15pm 1-szego w każdym miesiącu -- wyjście jest # przesyłane do paula 15 14 1 * * $HOME/bin/monthly # uruchamiaj się o 10 pm w dni robocze, denerwuj Joe. 0 22 * * 1-5 mail -s "Jest 10pm" joe%Joe,%%Gdzie są twoje dzieci?% 23 0-23/2 * * * echo "uruchamiaj 23 min po polnocy, 2am, 4am ..., codziennie" 5 4 * * sun echo "Uruchamiaj się 5 po 4 w niedziele" 0 10 * * 1,3 echo "Uruchamiaj się w każdy poniedzialek i srode o 10.00" */2 * * * * echo "Uruchamiaj się co 2 minuty"
Pierwsza część pliku to definicje dwóch zmiennych środowiskowych SHELL i MAILTO. Pierwsza z nich określa powłokę w której będą uruchamiane polecenia przez crona. Druga określa użytkownika, któremu pocztą elektroniczną wysłany zostanie raport zawierający standardowe wyjście oraz standardowe wyjście błędów jeśli wykonywane polecenie umieści coś na jednym z nich.
Druga część to już właściwa tabela zawierająca informacje o czasie uruchomienia i poszczególnych komendach dla każdego z zadań.
Weźmy na przykład następującą linię.
15 14 1 * * $HOME/bin/monthly
Składa się ona z sześciu kolumn, pierwsze pięć określa czas uruchomienia zadania, szósta definiuje komendę, która ma zostać wykonana:
* * * * * komenda do wykonania - - - - - | | | | | | | | | +----- dzień tygodnia (0 - 6) (Niedziela=0) | | | +------- miesiąc (1 - 12) | | +--------- dzień miesiąca (1 - 31) | +----------- godzina (0 - 23) +------------- minuta (0 - 59)
Dodatkowo wartości liczbowe możemy zapisywać w różnych formatach:
- 1-3 - czyli wartości 1,2,3
- 0-10/2 - czyli wartość 0,2,4,6,8 i 10 (co druga wartość ze zbioru od 0 do 10)
- 1,2,5 - czyli wartości kolejno 1,2,5
- */2 - co 2 dozwolona wartość (np. w pierwszej kolumnie będzie to 0,2,4,6...56,58)
- 1-3,5,6 - czyli 1,2,3 oraz 5 i 6
Tabela systemowa zawarta w pliku /etc/crontab posiada nieznacznie inną składnię: pierwsze pięć pól określa czas uruchomienia zadania, szóste pole określa nazwę użytkownika, z którego uprawnieniami zadanie zostanie uruchomione, siódme pole definiuje komendę, która zostanie wykonana.