Cron

Wersja z dnia 16:52, 25 lut 2015 autorstwa Budek (dyskusja) (Utworzono nową stronę "''Cron'' to specjalny program, odpowiedzialny za cykliczne wykonywanie zadań. Każdy użytkownik posiada specjalną tabelę ''crontab'', w której może ustawić jakie...")

(różn.) ← poprzednia wersja | przejdź do aktualnej wersji (różn.) | następna wersja → (różn.)

Cron to specjalny program, odpowiedzialny za cykliczne wykonywanie zadań. Każdy użytkownik posiada specjalną tabelę crontab, w której może ustawić jakie programy i kiedy powinny zostać automatycznie uruchomione.

Zarządzanie

Swoimi tabelami cron zarządzamy korzystając z polecenia crontab:

crontab -l pokazuje obecną tabelę cron
crontab -e edytuje tabelę
crontab -r usuwa tabelę

Przy poleceniu crontab -e, nasza tabela otwierana jest w domyślnym edytorze. Jeśli chcemy zmienić domyślny edytor na nano trzeba wydać polecenie: export EDITOR=nano.

Przykłady

Poniżej prezentujemy przykładową tabelę cron. Należy zwrócić szczególną uwagę na zmienne MAILTO i PATH - sprawiają one że praca z cronem staje się wygodniejsza.

# Używaj /usr/local/bin/bash do wywoływania komend. Ta linijka nie jest wymagana do działania crontab.
SHELL=/usr/local/bin/bash

# Przesyłaj raport na adres e-mail:
MAILTO=login@example.com

# Użyj następującej wartości zmiennej PATH. Bez tego musimy podawać pełne ścieżki do binarek (przykładowo,
# zamiast python musimy podać /usr/local/bin/python, etc.
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/games:/usr/local/sbin:/usr/local/bin:login/bin

# 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 dnia każdego miesiąca -- wyjście jest
# przesyłane na adres e-mail
15 14 1 * *      $HOME/bin/monthly

# Denerwuj Stefana od poniedziałku do piątku o godzinie 22:00
0 22 * * 1-5     echo "Stefanie, jest już 22:00. Gdzie są Twoje dzieci?!" | mail -s "Wybiła 22:00" stefan@example.com 

# Inne przykłady
23 0-23/2 * * *  echo "uruchamiaj 23 min po polnocy, 2, 4 ..., codziennie"
5 4 * * sun      echo "Uruchamiaj się 5 po 4 w niedziele"
0 10 * * 1,3     echo "Uruchamiaj się w każdy poniedzialek i srode o 10.00"
*/2 * * * *      echo "Uruchamiaj się co 2 minuty"

#lub z wykorzystaniem zapisu słownego z wykorzystaniem znaku "@" tzn.:

@reboot          echo "System uruchomił się!";    # - polecenie uruchamiane każdorazowo po uruchomieniu systemu
@yearly          echo "Minął kolejny rok!";       # - odpowiednik zapisu     "0 0 1 1 *
@annually        echo "Minął kolejny rok!";       # - jak wyżej
@monthly         echo "Minął kolejny miesiąc!";   # - odpowiednik zapisu "0 0 1 * *"
@weekly          echo "Minął kolejny tydzień!";   # - odpowiednik zapisu "0 0 * * 0"
@daily           echo "Minął kolejny dzień!";     # - odpowiednik zapisu   "0 0 * * *"
@midnight        echo "Minął kolejny dzień!";     # - jak wyżej
@hourly          echo "Minęła kolejna godzina!";  # - odpowiednik zapisu "0 * * * *"