CRON wywodzi się z Unix'a. Ma on za zadanie regularne uruchamianie innych programów. Jest demonem działającym w tle. Cron przy wywoływaniu innych komend posługuje się tabelami
crontab, które mogą być zdefiniowane oddzielnie dla każdego użytkownika systemowego.
Cron przegląda
/var/spool/cron/crontabs w poszukiwaniu plików-tabel (crontab), o nazwach zgodnych z istniejącymi kontami systemowymi. Jeśli uda się odnaleźć takie tabele to są one ładowane do pamięci. Plik konfiguracyjny cron'a to
/etc/crontab . Format tego pliku jest nieco inny niż pozostałych tabel.
Cron uruchamia się co minutę (gdyż z taką dokładnością można ustawić czas wywoływania programów) i sprawdza wszystkie załadowane do pamięci tabele wykonując zawarte w nich polecenia. Sprawdza też czy czas modyfikacji tabel nie został zmieniony, wtedy to ładuje taką tabelę do pamięci w miejsce starej. Takie zachowanie powoduje iż nie musimy restartować demona, za każdym razem gdy zmienimy którąkolwiek tabelę.
Tabele z komendami do uruchomienia przez demona CRON noszą nazwę crontab. Tak samo nazywa się program do ich edycji. Polecenie:
$ crontab -l wyświetla tablicę poleceń dla bieżącego użytkownika systemowego.
$ crontab -e edytuje tą tablicę
$ crontab -r czyści tablicę
Efekty wywołania komend oraz standardowe wyjście błędów są przesyłane do właściciela tabeli jeśli zdefiniowano taki mail w zmiennej MAILTO w tabeli crontab.
Przykładowy plik crontab zawiera:
# 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"
zmienne sterujące oraz określenie kiedy jaka komenda ma być uruchomiona. Pojedynczy wpis do crontab'a składa się z
A B C D E /polecenie_do_wykonaniagdzie w kolumnach A-E podajemy:
- A - minuta (0-59)
- B - godzina (0-23)
- C - dzień miesiąca (1-31)
- D - miesiąc (1-12, lub angielskie nazwy)
- E - (0-7 lub angielskie nazwy, 0 - niedziela)
Możemy też używać następujących symboli zastępujących
Przykładowy wpis to
0/30 * * 1 0 date > date.txtco oznacza: o pełnej godzinie lub o wpół w styczniu w każdą niedzielę uruchom zapisz datę do pliku date.txt