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.
- -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.
Dodatkowo, w Debianie,
cron odczytuje pliki w katalogu /etc/cron.d.
cron traktuje pliki w /etc/cron.d w ten sam sposób, jak w pliku
/etc/crontab (przestrzegają one specjalnego formatu tego pliku, np.
zawierają pole
user). Są one jednak niezależne od
/etc/crontab: nie dziedziczą np. ustawień zmiennych
środowiskowych z wspomnianego pliku. Zmiana ta jest charakterystyczna dla
Debiana - patrz
ZMIANY ODNOSZĄCE SIĘ DO DEBIANA.
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.
Jak opisano powyżej, pliki w tych katalogach muszą spełniać
kilka warunków, w tym następujące: bycie wykonywalnym, bycie
własnością roota, nie mogą być zapisywalne dla grupy
lub innych i, jeśli są dowiązaniami symbolicznymi, muszą
wskazywać na pliki będące własnością roota.
Dodatkowo, nazwy plików muszą spełniać warunki nazw
plików programu
run-parts: muszą składać się
wyłącznie z liter, cyfr i znaków podkreślenia
("_") oraz minusa ("-"). Każdy plik, który nie
spełni powyższych wymagań, nie będzie wykonany przez
run-parts. Na przykład wszystkie pliki zawierające
kropkę, zostaną zignorowane. Celem takiej konfiguracji jest
zapobiegnięcie wykonywania przez crona plików, które
zostały pozostawione przez debianowy system zarządzania pakietami,
podczas obsługi plików w /etc/cron.d/, jako plików
konfiguracyjnych (chodzi tu o pliki kończące się na .dpkg-dist,
.dpkg-orig i .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.
Obsługa /etc/cron.d jest dołączona do samego demona
cron,
który obsługuje ich położenie za pomocą
ogólnosystemowego spool crontab. Katalog ten może zawierać
każdy plik definiujący zadania, przestrzegający formatu z
/etc/crontab - w przeciwieństwie do katalogu spool crona, pliki te
muszą zawierać nazwę użytkownika, aby uruchamiać
zadania jako definicje zadań.
Pliki w tym katalogu muszą być własnością roota, lecz
nie muszą być wykonywalne (są to pliki konfiguracyjne, jak
/etc/crontab) i muszą przestrzegać tej samej konwencji nazw, jaka
jest używana przez
run-parts(8): muszą składać
się wyłącznie z wielkich i małych liter, cyfr,
podkreślników i minusów. Oznacza to, że
nie
mogą zawierać kropek. Jeśli użyto opcji
-l
(opcja ta może zostać skonfigurowana za pomocą
/etc/default/cron - patrz niżej), to nazwy plików muszą
być zgodne z specyfikacją przestrzeni nazw LSB, identycznie jak
opcja
--lsbsysinit w
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 man
są: Przemek Borys (PTM) <pborys@dione.ids.pl> i Michał
Kułach <michal.kulach@gmail.com>.
Polskie tłumaczenie jest częścią projektu manpages-pl;
uwagi, pomoc, zgłaszanie błędów na stronie
http://sourceforge.net/projects/manpages-pl/. Jest zgodne z wersją
3.0pl1 oryginału.