Scroll to navigation

CRON(8) System Manager's Manual CRON(8)

NAZWA

cron - demon do wywoływania odłożonych poleceń (Vixie Cron)

SKŁADNIA

cron [-f] [-l] [-L poziom-komunikatów]

OPIS

cron jest uruchamiany automatycznie z /etc/init.d, przy wchodzeniu w poziom pracy wielu użytkowników.

OPCJE

-f
Pozostaje w trybie pierwszoplanowym, nie staje się demonem.
-l
Włącza zgodność nazw plików w katalogu /etc/cron.d z LSB. To ustawienie nie wpływa jednak na przetwarzanie plików w katalogach /etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly lub /etc/cron.monthly.
-n
Include the FQDN in the subject when sending mails. By default, cron will abbreviate the hostname.
-L poziom-komunikatów
Wybiera, jakie informacje o  zadaniach mają być zapisywane do dziennika (błędy są logowane niezależnie od tej wartości). Jest to suma poniższych wartości:
1
zapisuje uruchomienie wszystkich zadań crona
2
zapisuje koniec wszystkich zadań crona
4
zapisuje wszystkie zadania zakończone niepowodzeniem (kod zakończenia różny od 0)
8
zapisuje numer procesu wszystkich zadań crona
Domyślnie zapisywane jest uruchomienie wszystkich zadań (1). Logowanie jest wyłączane, jeśli poziom-komunikatów jest ustawiony na zero (0). Wartość równa piętnaście (15) wybierze wszystkie opcje.

UWAGI

cron przeszukuje swój katalog spool (/var/spool/cron/crontabs) w poszukiwaniu plików crontab (które są nazwane zgodnie z kontami w /etc/passwd); odnalezione pliki są następnie ładowane do pamięci. Proszę zauważyć, że pliki crontab w tym katalogu nie powinny być osiągane bezpośrednio - do ich aktualizacji i dostępu powinno być używane polecenie crontab.

cron odczytuje również /etc/crontab, które posiada nieco inny format (patrz crontab(5)). W Debianie, zawartość /etc/crontab jest predefiniowana do uruchamiania programów w katalogach /etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly i /etc/cron.monthly. Konfiguracja ta jest charakterystyczna dla Debiana, proszę zapoznać się z opisem w poniższym rozdziale ZMIANY ODNOSZĄCE SIĘ DO DEBIANA.

Additionally, in Debian, cron reads the files in the /etc/cron.d directory. cron treats the files in /etc/cron.d as in the same way as the /etc/crontab file (they follow the special format of that file, i.e. they include the user field). However, they are independent of /etc/crontab: they do not, for example, inherit environment variable settings from it. This change is specific to Debian see the note under DEBIAN SPECIFIC below.

Podobnie jak /etc/crontab, pliki w katalogu /etc/cron.d są monitorowane w poszukiwaniu zmian. Ogólnie, administrator systemu nie powinien używać /etc/cron.d/, lecz standardowego pliku /etc/crontab.

Plik /etc/crontab i pliki w /etc/cron.d muszą był własnością roota i nie mogą być zapisywalne dla grupy lub innych. W odróżnieniu od katalogu spool, pliki w katalogach /etc/cron.d oraz /etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly i /etc/cron.monthly mogą być również dowiązaniami symbolicznymi pod warunkiem, że zarówno samo dowiązanie jak i plik na który ono wskazuje, są własnością roota. Pliki w katalogu /etc/cron.d nie muszą być wykonywalne, natomiast pliki w katalogach /etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly i /etc/cron.monthly - muszą, ponieważ są uruchamiane przez run-parts (patrz podręcznik run-parts(8)).

Program cron budzi się co minutę, sprawdzając wszystkie pliki crontab i sprawdzając, czy poszczególne polecenia nie muszą być wykonane w bieżącej minucie. Po wykonaniu poleceń, ich ewentualne wyjście jest wysyłane pocztą do właściciela pliku crontab (lub do użytkownika ze zmiennej środowiskowej MAILTO z pliku crontab, jeśli taka istnieje). Kopie potomne crona, które wykonują te procesy, mają ich nazwy zapisane wielkimi literami, jak to widać w wyniku poleceń syslog i ps.

Dodatkowo, cron sprawdza co minutę, czy czas modyfikacji swojego katalogu spool (lub pliku /etc/crontab) nie zmienił się, a jeśli tak się stało, to cron sprawdza czasy modyfikacji wszystkich plików crontab i przeładowuje te z nich, które się zmieniły. Z tego powodu cron nie musi być restartowany po modyfikacji plików crontab. Proszę zauważyć, że polecenie crontab(1) aktualizuje czas modyfikacji katalogu spool, niezależnie od tego, czy zmodyfikował plik crontab.

Specjalnym przypadkiem jest, gdy czas zmieni się o mniej niż 3 godziny, np. na początku lub końcu obowiązywania czasu letniego. Jeśli czas przesuwa się do przodu, to zadania, które byłyby uruchomione w czasie, który został przesunięty, są uruchamiane zaraz po wystąpieniu zmiany. I na odwrót - jeśli czas przesunie się do tyłu o mniej niż 3 godziny, to zadania, które przypadają w powtórzonym czasie, nie będą uruchamiane ponownie.

Tyczy się to wyłącznie zadań wykonywanych w określonym czasie (niepodanych jako @hourly, ani nie używających "*" jako określenia godziny lub minuty). Zadania, które są podawane z wieloznacznikiem, są uruchamiane od razu na podstawie nowego czasu.

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

Program cron zapisuje swoje działania do właściwości "cron" sysloga, a logowanie może być kontrolowane przy użyciu standardowej właściwości syslogd(8).

ŚRODOWISKO

Jeśli zmienne środowiskowe lokalizacji (regionalne) w systemie Debian, w katalogu /etc/default/cron, zostaną skonfigurowane, to można nimi zarządzać używając /etc/environment albo za pomocą /etc/default/locale, przy czym wartości z drugiego pliku przesłaniają te z pierwszego. Pliki te są odczytywane i są używane do ustawienia zmiennych środowiskowych LANG, LC_ALL i LC_CTYPE. Zmienne te są używane do ustawienia kodowania poczty elektronicznej, przy czym domyślnie wynosi ono "C".

NIE wpływa to na środowisko zadań uruchamianych przez cron. Więcej informacji o modyfikowaniu środowiska zadań zawiera strona podręcznika crontab(5).

Demon będzie używał, jeśli jest obecna, definicji strefy czasowej z pliku /etc/timezone.

Środowisko może zostać przefediniowane przez definicje z plików crontab użytkownika, lecz cron obsługuje wykonywanie zadań jedynie w pojedynczej strefie czasowej.

ZMIANY ODNOSZĄCE SIĘ DO DEBIANA

Debian wprowadził pewne zmiany do crona, które nie były dostępne w oryginale. Najważniejsze zmiany to:

obsługa /etc/cron.{hourly,daily,weekly,monthly} poprzez /etc/crontab,
obsługa /etc/cron.d (katalog do umieszczania plików crontab pakietów),
obsługa PAM,
obsługa SELinux,
obsługa auditlog,
obsługa DST (czasu letniego) i inne zmiany/poprawki w stosunku do czasu,
SGID crontab(1) zamiast SUID root,
debianowe położenia plików i polecenia,
debianowa konfiguracja (/etc/default/cron),
wiele innych mniejszych funkcji i poprawek.

Obsługa /etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly i /etc/cron.monthly w Debianie jest zapewniona przez domyślne ustawienia w pliku /etc/crontab (patrz systemowy przykład w crontab(5)). Domyślny, ogólnosystemowy plik crontab zawiera cztery zadania, uruchamiane: cogodzinnie, codziennie, cotygodniowo i comiesięcznie. Każde z tych zadań wykona run-parts, podając każdy z tych katalogów jako argument. Zadania są wyłączane, jeśli zainstalowany jest anacron (z wyjątkiem zadań cogodzinnych) aby zapobiec konfliktom pomiędzy oboma demonami.

As described above, the files under these directories have to pass some sanity checks including the following: be executable, be owned by root, not be writable by group or other and, if symlinks, point to files owned by root. Additionally, the file names must conform to the filename requirements of run-parts: they must be entirely made up of letters, digits and can only contain the special signs underscores ('_') and hyphens ('-'). Any file that does not conform to these requirements will not be executed by run-parts. For example, any file containing dots will be ignored. This is done to prevent cron from running any of the files that are left by the Debian package management system when handling files in /etc/cron.d/ as configuration files (i.e. files ending in .dpkg-dist, .dpkg-orig, .dpkg-old, and .dpkg-new).

Funkcja ta może zostać użyta przez administratorów systemu i pakiety, do zdefiniowania zadań, które mają być uruchamiane w zdefiniowanych interwałach. Pliki tworzone przez pakiety w tych katalogach, powinny być nazywane tak samo, jak dostarczający je pakiet.

Support for /etc/cron.d is included in the cron daemon itself, which handles this location as the system-wide crontab spool. This directory can contain any file defining tasks following the format used in /etc/crontab, i.e. unlike the user cron spool, these files must provide the username to run the task as in the task definition.

Files in this directory have to be owned by root, do not need to be executable (they are configuration files, just like /etc/crontab) and must conform to the same naming convention as used by run-parts(8) : they must consist solely of upper- and lower-case letters, digits, underscores, and hyphens. This means that they cannot contain any dots. If the -l option is specified to cron (this option can be setup through /etc/default/cron, see below), then they must conform to the LSB namespace specification, exactly as in the --lsbsysinit option in run-parts.

Przeznaczeniem tej funkcji było umożliwienie pakietom, wymagającym dokładniejszej kontroli harmonogramu niż /etc/cron.{hourly,daily,weekly,monthly}, dodawania swoich plików crontab do /etc/cron.d. Pliki te powinny być nazwane tak samo, jak udostępniający je pakiet.

Domyślna konfiguracja crona jest kontrolowana przez plik /etc/default/cron, który jest odczytywany przez skrypt init.d, uruchamiający demona cron. Plik ten określa, czy cron będzie czytał systemowe zmienne środowiskowe oraz umożliwia dodawanie dodatkowych opcji do programu cron, przed jego wykonaniem - umożliwiając konfigurację zapisywanego dziennika lub definiowanie sposobu traktowania plików w katalogu /etc/cron.d.

ZOBACZ TAKŻE

crontab(1), crontab(5), run-parts(8)

AUTOR

Paul Vixie <paul@vix.com> jest autorem crona i pierwotnym twórcą tej strony podręcznika systemowego. Niniejsza strona została również zmodyfikowana do Debiana przez Steve'a Greenlanda, Javiera Fernandez-Sanguino i Christiana Kastnera.

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 lub nowszej. Nie przyjmuje się ŻADNEJ ODPOWIEDZIALNOŚCI.

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

19 kwietnia 2010 4th Berkeley Distribution