CRON(8)

NAZWA
cron - demon do wywoływania odłożonych poleceń

SKŁADNIA
crond [-c | -h | -i | -n | -p | -P | -s | -m<polecenie-poczty>]
crond -x [ext,sch,proc,pars,load,misc,test,bit]
crond -V

OPIS
Gdy używa się klasycznych skryptów sysvinit cron jest uruchamiany z /etc/rc.d/init.d lub /etc/init.d. Jeśli włączono systemd, plik jednostki jest instalowany do /lib/systemd/system/crond.service a demon jest uruchamiany poleceniem systemctl start crond.service. Program powraca do powłoki natychmiast, zatem nie ma konieczności poprzedzania go parametrem "&"

Cron przeszukuje katalog /var/spool/cron szukając plików crontab nazwanych tak jak konta w pliku /etc/passwd. Odnalezione pliki crontab są ładowane do pamięci. Cron szuka również /etc/anacrontab i dowolnych plików w katalogu /etc/cron.d, które mają inny format (zob. crontab(5)). Cron sprawdza wszystkie zachowane pliki crontab określając, czy jakiekolwiek z zadań nie musi być uruchomione w bieżącej minucie. Przy wykonywaniu poleceń ich wyjście jest wysyłane pocztą elektroniczną do właściciela pliku crontab (lub użytkownika podanego w zmiennej środowiskowej MAILTO, jeśli taki istnieje). Wyniki poleceń mogą być również wysyłane do dziennika systemowego za pomocą opcji -s.

Istnieją dwa sposoby, w jakie sprawdzane są pliki crontab. Pierwszym jest sprawdzenie czasu modyfikacji pliku, drugi wykorzystuje obsługę inotify. Użycie inotify jest odnotowywane w dzienniku /var/log/cron po uruchomieniu demona. Obsługa inotify sprawdza wszelkie zmiany we wszystkich plikach crontab i uzyskuje dostęp do dysku tylko gdy odnotowana jest zmiana.

Przy używaniu opcji czasu modyfikacji (modtime) cron sprawdza czasy modyfikacji plików crontab co minutę i przeładowuje pliki crontab które uległy zmianie. Nie ma potrzeby ponownego uruchamiania crona po modyfikacji plików crontab. Opcja czasu modyfikacji jest również używana gdy nie można zainicjować inotify.

Cron sprawdza następujące pliki i katalogi:

/etc/crontab
    systemowy plik crontab. Obecnie jest on domyślnie pusty. Pierwotnie był używany do uruchamiania zadań codziennych, cotygodniowych i comiesięcznych. Aktualnie są one domyślnie wykonywane przez anacron, który odczytuje plik konfiguracyjny /etc/anacrontab. Więcej szczegółów znajduje się w podręczniku systemowym anacrontab(5).

/etc/cron.d/
    katalog zawierający systemowe zadania crona przechowywane dla różnych użytkowników.

/var/spool/cron
    katalog zawierający zadania crona użytkowników, utworzone poleceniem crontab.

Proszę zauważyć, że polecenie crontab(1) aktualizuje czas modyfikacji katalogu spool przy każdej zmianie pliku crontab.

  Obsługa czasu letniego i inne zmiany czasu
Lokalne zmiany czasu mniejsze niż trzy godziny, takie jak spowodowane zmianą czasu letniego, są obsługiwane w specjalny sposób. Dotyczy to tylko zadań które uruchamiają się o określonym czasie i zadań o granularności większej niż jedna godzina. Zadania odbywające się częściej są zlecane w zwykły sposób.

Jeśli czas został przesunięty o godzinę do przodu, zadania które uruchomiłyby się w pomijanej godzinie, zostaną wykonane natychmiast. Jeśli czas został przesunięty godzinę do tyłu, unikane jest wykonywanie tych samych zadań dwukrotnie.

Zmiany zegara o więcej niż 3 godziny, są uważane za poprawki zegara lub strefy czasowej i nowy czas jest używany od razu.

Do plików crontab można używać różnych stref czasowych. Więcej informacji w podręczniku systemowym crontab(5).

  Kontrola dostępu PAM
Cron obsługuje kontrolę dostępu za pomocą PAM, jeśli jest zainstalowany. Więcej informacji w podręczniku pam(8). Plik konfiguracyjny PAM crond jest zainstalowany w /etc/pam.d/crond. Demon ładuje środowisko PAM z modułu pam_env. Można to przesłonić definiując właściwe ustawienie w odpowiednim pliku crontab.

OPCJE

-h  Wyświetla komunikat pomocy i wychodzi.

-i  Wyłącza obsługę inotify.

-m  Opcja pozwala podać polecenie powłoki używane do wysyłania poczty przez cron, zamiast domyślnego sendmail(8). Polecenie to musi akceptować w pełni sformatowaną wiadomość poczty elektronicznej (z nagłówkami) na swoim standardowym wejściu i wysłać ją jako wiadomość poczty elektronicznej do adresatów podanych w nagłówku wiadomości. Podanie jako argumentu ciągu off (tzn. crond -m off) wyłączy wysyłanie wiadomości.

-n  Nakazuje demonowi działanie w tle. Przydatne przy uruchamianiu z systemu init. Przy korzystaniu z tej opcji konieczna będzie zmiana ustawień pam: /etc/pam.d/crond nie może włączać modułu pam_loginuid.so.

-f  Równoważne -n, dla zachowania spójności z innymi implementacjami crond.

-p  Pozwala cronowi akceptować tabele crona dowolnego użytkownika.

-P  Nie ustawia PATH, lecz dziedziczy ją ze środowiska.

-c  Opcja ta włącza obsługę klastrów, zgodnie z opisem poniżej.

-s  Opcja ta nakazuje cronowi wysyłanie wyniku zadań do dziennika systemowego, za pomocą syslog(3). Jest to przydatne, gdy dany system nie ma zainstalowanego sendmail(8) lub gdy poczta jest wyłączona.

-x  Opcja pozwala ustawić flagi debugowania.

-V  Wyświetla informacje o wersji i kończy działanie.

SYGNAŁY
Gdy otrzymany jest SIGHUP, demon cron zakończy zamknie i otworzy ponownie swój plik dziennika. Jest to przydatne w skryptach, które rotują stare pliki dzienników. Oczywiście nie ma to znaczenia, jeśli zbudowano Cron do używania syslog(3).

OBSŁUGA KLASTRÓW
W niniejszej wersji Cron można korzystać z montowanego sieciowo, wspólnego /var/spool/cron dla klastra komputerów i określić, że w danym czasie jedynie jeden z nich powinien uruchamiać zadania crontab z tego katalogu. W tym celu należy uruchomić Cron z opcją -c, natomiast plik /var/spool/cron/.cron.hostname powinien zawierać jedynie pojedynczy wiersz z nazwą tego komputera z klastra, który ma wykonywać zadania. Jeśli plik ten nie istnieje lub nazwa komputera nie jest zwracana przez gethostname(2), to wszystkie pliki crontab w tym katalogu są ignorowane. Nie ma to wpływu na zadania crona podane w pliku /etc/crontab lub w plikach w katalogu /etc/cron.d. Te pliki są wykonywane zawsze i są uważane za przeznaczone do danego komputera.

Zamiast bezpośrednio edytować /var/spool/cron/.cron.hostname, proszę korzystać z opcji -n crontab(1) do określenia komputera.

Należy się upewnić, że wszystkie komputery w klastrze oraz serwer plików, z którego montowany jest wspólny katalog crontab, mają zsynchronizowane zegary, np. za pomocą ntpd(8), w przeciwnym wypadku wyniki mogą być nieprzewidywalne.

Używanie wspólnego klastra automatycznie wyłącza obsługę inotify, ponieważ inotify nie działa dobrze na wspólnych systemach plików montowanych sieciowo.

ZASTRZEŻENIA
Wszystkie pliki crontab muszą być zwykłymi plikami lub dowiązaniami symbolicznymi do zwykłych plików, nie mogą być one wykonywalne lub zapisywalne dla kogokolwiek poza właścicielem. Wymaganie to można znieść opcją -p w wierszu polecenia crond. Jeśli korzysta się z obsługi inotify, zmiany w dowiązanych plikach crontab nie są automatycznie dostrzegane przez demona cron. Do przeładowania plików crontab musi on wówczas otrzymać sygnał SIGHUP. Jest to ograniczenie API inotify.

Jeśli nie zainstalowano sendmail, wyjście będzie wysyłane do dziennika systemowego zamiast pocztą.

ZOBACZ TAKŻE
crontab(1), crontab(5), inotify(7), pam(8)

AUTOR
Paul Vixie (vixie@isc.org)
Marcela Mašláňová (mmaslano@redhat.com)
Colin Dean (colin@colin-dean.org)
Tomáš Mráz (tmraz@fedoraproject.org)

TŁUMACZENIE
Autorami polskiego tłumaczenia niniejszej strony podręcznika są: Przemek Borys <pborys@dione.ids.pl> i Michał Kułach <michal.kulach@gmail.com>

Niniejsze tłumaczenie jest wolną dokumentacją. Bliższe informacje o warunkach licencji można uzyskać zapoznając się z GNU General Public License w wersji 3 (https://www.gnu.org/licenses/gpl-3.0.html) lub nowszej. Nie przyjmuje się ŻADNEJ ODPOWIEDZIALNOŚCI.

Błędy w tłumaczeniu strony podręcznika prosimy zgłaszać na adres listy dyskusyjnej manpages-pl-list@lists.sourceforge.net.