Provided by: manpages-pl_0.7-2_all bug

NAZWA

       crontab - tabele do crona

OPIS

       Plik  crontab zawiera wskazówki dla demona cron(8), sformatowane w ogólnej postaci: "uruchom tę komendę o
       tej porze i tego dnia". Każdy użytkownik ma swoją własną tabelę  crontab,  a  komendy  z  każdej  podanej
       tabeli  są  wykonywane  z  uprawnieniami jej właściciela. News i uucp zazwyczaj mają swoje własne tabele,
       eliminując w ten sposób potrzebę jawnego wywoływania su(1) jako części komendy crona.

       Puste wiersze, spacje oraz tabulacje są ignorowane. Wiersze, w których pierwszym nie-białym znakiem  jest
       kratka  (#),  są komentarzami i też są ignorowane. Proszę zauważyć, że komentarze nie mogą wystąpić w tym
       samym wierszu co komendy crona, ponieważ  będą  one  wtedy  potraktowane  jak  część  komendy.  Podobnie,
       komentarze nie są dozwolone w wierszach ustawień zmiennych środowiskowych.

       Aktywny  wiersz  tabeli  może  być  albo  ustawieniem  środowiska,  albo  komendą crona. Plik tabeli jest
       przetwarzany od góry do dołu, tak więc ustawienie zmiennej środowiskowej będzie miało  wpływ  jedynie  na
       komendy crona znajdujące się poniżej jej. Ustawianie zmiennej ma postać

           nazwa = wartość

       gdzie  spacje wokół znaku równości (=) są opcjonalne, a wszelkie kolejne, niepoczątkowe spacje w wartości
       zostaną częścią wartości przypisanej zmiennej nazwa. Łańcuch wartość może być umieszczony w  cudzysłowach
       (pojedynczych  lub  podwójnych,  lecz  jednakowych  w parze). Zachowa to początkowe i końcowe spacje. Aby
       zdefiniować pustą zmienną, trzeba zastosować cudzysłowy. Łańcuch wartość nie jest przetwarzany pod  kątem
       podstawień zmiennych środowiskowych lub zastąpień zmiennych, tak więc wiersze takie jak

           PATH = $HOME/bin:$PATH

       nie będą działać zgodnie z przewidywaniami. Tak samo będzie z tym przykładem:

           A=1
           B=2
           C=$A $B

       Nie nastąpi podmiana zdefiniowanymi zmiennymi w ostatniej wartości.

       Alternatywą  do ustawiania ścieżki poleceń jest skorzystanie z faktu, że wiele powłok traktuje znak tyldy
       (~) jako podstawienie $HOME, więc w przypadku używania basha, można użyć

            SHELL=/bin/bash
            PATH=~/bin:/usr/bin/:/bin

       Wiele zmiennych środowiskowych jest ustawianych automatycznie przez demona cron(8).  SHELL jest ustawiany
       na /bin/sh, LOGNAME i HOME są ustawiane na podstawie wierszy /etc/passwd właściciela tabeli.   PATH  jest
       ustawiane na "/usr/bin:/bin". Zmienne HOME, SHELL i PATH mogą być przesłonięte przez ustawienia w tabeli.
       Nie można tak zrobić z LOGNAME, który jest użytkownikiem, z którego uruchamiane jest polecenie.

       Inna uwaga: zmienna LOGNAME nazywa się czasem USER na systemach BSD... na tych systemach ustawiana będzie
       również zmienna USER.

       Dodatkowo,  poza powyższymi zmiennymi, cron(8)  będzie korzystał z MAILTO jeśli zajdzie potrzeba wysłania
       listu jako wyniku wykonania komend z "tej" tabeli. Jeśli MAILTO jest zdefiniowane (i niepuste),  to  list
       zostanie wysłany do wskazanego tam użytkownika. Można podać wielu odbiorców, oddzielając ich przecinkiem.
       Jeśli  MAILTO  jest  zdefiniowane,  lecz  puste  (MAILTO=""),  to  nie są wysyłane żadne listy.  W innych
       wypadkach listy są wysyłane do właściciela tabeli.

       W systemach Debian GNU/Linux, cron obsługuje moduł pam_env i ładuje zmienną podaną w  /etc/environment  i
       /etc/security/pam_env.conf. Odczytuje również informacje o ustawieniach językowych z /etc/default/locale.
       Jednak  ustawienia  PAM  NIE  przesłonią  ustawień opisanych powyżej, ani żadnych ustawień z samego pliku
       crontab. W szczególności, jeśli chce się ustawić zmienną PATH na inną niż "/usr/bin:/bin", konieczne jest
       wykonanie tego w samej tabeli.

       Domyślnie, cron wyśle wiadomość używając nagłówka pocztowego "Content-Type:" z "text/plain" i  parametrem
       "charset="  ustawionym na mapę znaków lub kodowanie ustawień językowych (locale), w momencie uruchomienia
       crond(8); to znaczy albo domyślnych ustawień systemowych, jeśli nie  ustawiono  zmiennych  środowiskowych
       LC_*  albo  określonych  zmiennymi  LC_*  (patrz  locale(7)).  Można  użyć innego kodowania do wysyłanych
       wiadomości zadań crona, ustawiając zmienne CONTENT_TYPE i CONTENT_TRANSFER_ENCODING w plikach crontab, na
       właściwe wartości nagłówków pocztowych.

       Format komendy crona jest podobny do standardu V7, z wieloma rozszerzeniami. Każdy  wiersz  ma  pięć  pól
       czasu  i  daty,  za którymi znajduje się polecenie, kończące się znakiem nowego wiersza ("\n"). Systemowy
       plik crontab (/etc/crontab) używa tego samego formatu, z tym wyjątkiem, że po czasie  i  dacie,  a  przed
       poleceniem, znajduje się nazwa użytkownika. Pola mogą być oddzielone spacjami lub tabulatorami.

       Polecenia  są  wywoływane przez demona cron(8), gdy minuta, godzina i miesiąc z wpisu odpowiadają czasowi
       bieżącemu oraz gdy przynajmniej jedno z dwóch pól dnia (dzień miesiąca lub dzień  tygodnia)   odpowiadają
       czasowi  bieżącemu  (patrz  "Uwagi" poniżej). Program cron(8) sprawdza wpisy cron co minutę. Pola czasu i
       daty to:

              Pole           dozwolone wartości
              ----           ------------------
              minuta         0-59
              godzina        0-23
              dzień miesiąca 1-31
              miesiąc        1-12 (albo nazwy, patrz niżej)
              dzień tygodnia 0-7 (0 lub 7 jest niedzielą; albo nazwy)

       Pole może mieć gwiazdkę (*), która oznacza "pierwszy-ostatni".

       Dozwolone są zakresy liczb.  Zakresy  są  dwiema  liczbami,  oddzielonymi  myślnikiem.  Zakres  ten  jest
       domknięty. Na przykład, 8-11 dla "godzin" oznacza wywoływanie w godzinach 8, 9, 10, 11.

       Dozwolone  są  też  listy.  Lista jest zbiorem liczb (lub zakresów), oddzielonych przecinkami. Przykłady:
       "1,2,5,9", "0-4,8-12".

       W połączeniu z zakresami można używać wartości krokowych.  Napisanie  za  zakresem  elementu  "/<liczba>"
       oznacza  odstępy między wartościami liczby w zakresie. Na przykład "0-23/2" oznacza liczby parzyste w tym
       zakresie (alternatywą w standardzie V7 jest "0,2,4,6,8,10,12,14,16,18,20,22"). Wartości krokowe dozwolone
       są też za gwiazdkami, więc jeśli aby zdefiniować "co drugą godzinę", można użyć po prostu "*/2".

       Dla "miesięcy" i "dni tygodnia" można używać również nazw. Można użyć pierwszych trzech liter konkretnego
       dnia lub  miesiąca  (po  angielsku,  wielkość  liter  nie  ma  znaczenia).  Zakresy  lub  listy  nazw  są
       niedozwolone.

       Szóste  pole  (reszta wiesza) określa polecenie, jaką należy wykonać. Cała część polecenia wiersza, aż do
       nowego wiersza lub znaku %, zostanie wykonana przez /bin/sh,  lub  przez  inną  powłokę,  jaką  podano  w
       zmiennej  SHELL  pliku crona. Procenty w komendzie (%), o ile nie są chronione odwrotnymi ukośnikami (\),
       zostaną zamienione w znaki  nowego  wiersza,  a  wszelkie  dane  za  pierwszym  %  zostaną  przesłane  na
       standardowe  wejście  polecenia.  Nie da się podzielić pojedynczego polecenia na wiele wierszy, tak jak w
       powłoce można to zrobić kończąc wiersz "\".

       Uwaga: Dzień wywołania komendy może być podany w dwóch polach — dniu  miesiąca  i  dniu  tygodnia.  Jeśli
       obydwa  pola  są  podane  (np, nie są *), to komenda zostanie wywołana gdy dowolne z pól będą odpowiadały
       bieżącemu czasowi. Na przykład,
       “30 4 1,15 * 5” spowoduje wywołanie komendy o 4:30 pierwszego  i  15-tego  każdego  miesiąca  plus  każdy
       piątek.  Można  jednak  osiągnąć zamierzone działanie dodając do polecenia test (patrz ostatni przykład w
       PRZYKŁADOWY PLIK CRONA poniżej).

       Zamiast pierwszych pięciu pól, można użyć jednego z ośmiu łańcuchów specjalnych:

              łańcuch        znaczenie
              -------        ---------
              @reboot        uruchamia raz, przy rozruchu;
              @yearly        uruchamia raz w roku, "0 0 1 1 *";
              @annually      (to samo co @yearly);
              @monthly       uruchamia raz w miesiącu, "0 0 1 * *";
              @weekly        uruchamia raz w tygodniu, "0 0 * * 0";
              @daily         uruchamia raz na dzień, "0 0 * * *";
              @midnight      (to samo co @daily);
              @hourly        uruchamia raz na godzinę, "0 * * * *".

       Za rozruch, w przypadku łańcucha @reboot, uważa się rozruch demona cron(8). W szczególności, może być  to
       wcześniej,  niż  uruchomią  się  pewne  demony systemowe lub inne usługi. Jest to spowodowane kolejnością
       startową danego komputera.

PRZYKŁADOWA TABELA CRON

       Poniżej znajduje się przykład pliku crontab użytkownika.

       # używaj /bin/bash do wywoływania komend, zamiast domyślnego /bin/sh.
       SHELL=/bin/bash
       # przesyłaj wyjście do użytkownika "paul", bez względu na
       # właściciela tabeli
       MAILTO=paul
       #
       # uruchamiaj się 5 minut po północy, codziennie
       5 0 * * *       $HOME/bin/daily.job >> $HOME/tmp/out 2>&1
       # uruchamiaj się o 14:15 pierwszego w każdym miesiącu -- wyjście jest
       # przesyłane do użytkownika paul
       15 14 1 * *     $HOME/bin/monthly
       # uruchamiaj się o 22 w weekendy, denerwuj Joe.
       0 22 * * 1-5   mail -s "Jest 22" joe%Joe,%%Gdzie są twoje dzieci?%
       23 0-23/2 * * * echo "uruchamiaj 23 min po: północy, 2, 4 ..., codziennie"
       5 4 * * sun     echo "Uruchamiaj o 4:05 w każdą niedzielę"
       # uruchamiaj się co drugą niedzielą miesiąca
       0 4 8-14 * *    test $(date +\%u) -eq 6 && echo "druga niedziela"

PRZYKŁADOWA SYSTEMOWA TABELA CRON

       Poniżej znajduje się zawartość standardowego, systemowego pliku crontab (z przetłumaczonym wyjaśnieniem).
       W przeciwieństwie do pliku  crontab  użytkownika,  ten  plik  ma  pole  "nazwa  użytkownika",  zgodnie  z
       /etc/crontab.

       # /etc/crontab: systemowy crontab
       # W przeciwieństwie do innych plików crontab, nie ma potrzeby
       # uruchamiania polecenia "crontab" w celu zainstalowania nowej
       # wersji pliku, po jego edycji i po edycji plików w /etc/cron.d
       # Pliki te mają również pole "nazwa użytkownika", którego nie
       # posiadają inne pliki crontab.

       SHELL=/bin/sh
       PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

       #m g d mies dztyg użytk polecenie
       17 * * * *  root  cd / && run-parts --report /etc/cron.hourly
       25 6 * * *  root  test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
       47 6 * * 7  root  test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
       52 6 1 * *  root  test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
       #

ZOBACZ TAKŻE

       cron(8), crontab(1)

ROZSZERZENIA

       Podczas podawania dnia tygodnia, zarówno 0 jak i 7 jest uważane za niedzielę. BSD i AT&T nie zgadzają się
       z tym.

       Listy  i zasięgi mogą koegzystować w tym samym polu. "1-3,7-9" będzie odrzucone przez crona AT&T i BSD --
       chcą one widzieć TYLKO "1-3" lub "7,8,9".

       Zakresy mogą zawierać "kroki", więc "1-9/2" jest tym samym co "1,3,5,7,9".

       Nazwy miesiąca lub dnia tygodnia mogą być podawane przez nazwę (angielską).

       W tabeli można ustawiać zmienne środowiskowe. W BSD i AT&T,  środowisko  przekazywane  procesom  potomnym
       jest po prostu tym z /etc/rc.

       Wyjście poleceń jest przesyłane właścicielowi tabeli (BSD nie tego potrafi), może być przesyłane do osoby
       innej  niż  właściciel  tabeli  (tego  nie  potrafi  SysV) lub funkcja ta może być wyłączona i nie będzie
       wysyłana żadna poczta (SysV tego też nie potrafi).

       Wszystkie polecenia "@", które mogą pojawić się w miejscu pierwszych pięciu pól są rozszerzeniami.

OGRANICZENIA

       Demon cron działa w zdefiniowanej strefie czasowej. Obecnie, nie obsługuje stref  czasowych  różnych  dla
       konkretnych  użytkowników.  Wszystkie zadania: systemowe i użytkownika będą uruchamiane w skonfigurowanej
       strefie czasowej. Nawet jeśli użytkownik poda zmienną środowiskową TZ w swoim pliku crontab,  to  dotknie
       to wyłącznie poleceń wykonywanych w tej tabeli, a nie samych zadań crontab.

       Składnia  crontab  nie  daje  możliwości  zdefiniowania  wszystkich wszystkich okresów, jakie można sobie
       wyobrazić. Przykładowo, nie jest łatwe  zdefiniowanie  ostatniego  weekendu  w  miesiącu.  Jeśli  zajdzie
       potrzeba  uruchomienia zadania w okresie, który nie może być zdefiniowany składnią crontab, to najlepszym
       wyjściem będzie wymuszenie sprawdzenia daty  i  czasu  przez  sam  uruchamiany  program  i  kontynuowanie
       wykonywania go tylko, jeśli dany okres jest właściwy.

       Jeśli program nie może tego wykonać, to konieczny może być skrypt opakowujący. Przydatnymi narzędziami do
       analizy daty są ncal i calendar. Na przykład, aby uruchomić progra w ostatnią niedzielę każdego miesiąca,
       można użyć poniższego kodu opakowującego:

       0 4 * * Sat   [ "$(date +\%e)" = "`ncal | grep $(date +\%a | sed  -e 's/.$//') | sed -e 's/^.*\s\([0-9]\+\)\s*$/\1/'`" ] && echo "Ostatnia niedziela" && program_do_wykonania

DIAGNOSTYKA

       Program  cron  wymaga,  aby  każdy wpis w pliku crontab kończył się znakiem nowego wiersza. Jeśli ostatni
       wpis w pliku crontab nie będzie go posiadał (tzn. zakończy się bezpośrednio EOF), to cron  stwierdzi,  że
       crontab  jest (przynajmniej częściowo) uszkodzony i odmówi jego instalacji. Ostrzeżenie zostanie wypisane
       do sysloga.

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>, Wojtek Kotwica (PTM) <wkotwica@post.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.

4th Berkeley Distribution                       19 kwietnia 2010                                      CRONTAB(5)