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.