Crontab
Z Wikipedii
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 paul'a 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:
- 15 - minuta (dozwolone wartości: 0-59)
- 14 - godzina (0-23)
- 1 - dzień miesiąca (1-31)
- * - miesiąc (1-12, lub nazwy)
- * - dzień tygodnia 0-7 (0 lub 7 jest niedzielą, lub użyj nazw)
- $HOME/bin/monthly - komenda wykonywana
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 (od 0 do 10 podzielone przez 2)
- 1,2,5 - czyli wartości kolejno 1,2,5
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.