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.