Crontab

crontab – tabela programu cron mająca specjalny format oraz nazwa programu służącego do jej edycji. Etymologia nazwy odnosi się do języka greckiego (χρόνος [czyt. chronos] znaczy czas).

Program crontab wywoływany z linii poleceń z opcją -l wyświetla aktualną tabelę użytkownika. Opcja -r usuwa ją, a -e pozwala na jej edycję.

Położenie

Tabele crona właściwe dla danych użytkowników znajdują się zwykle w katalogu /var/spool/cron/crontabs (np. jest tak w systemach HP-UX i Solaris, z kolei dystrybucja Linuksa RHEL i jej klony używają w tym celu /var/spool/cron).

Niektóre dystrybucje Linuksa mają dodatkową tabelę systemową umieszczoną w pliku /etc/crontab. Od zapisów tam umieszczonych zależy sposób obsługi skryptów z katalogów /etc/cron.*:

/etc/cron.hourly  – skrypty wykonywane co godzinę
/etc/cron.daily   – skrypty wykonywane codziennie
/etc/cron.weekly  – skrypty wykonywane raz w tygodniu
/etc/cron.monthly – skrypty wykonywane raz w miesiącu

W powyższych katalogach należy umieścić plik ze skryptem do wykonania.

Przykład

Przykładowa tabela crontab z systemu GNU/Linux właściwa dla danego użytkownika:

# Używaj /bin/sh do wywoływania komend. Nieważne co jest w /etc/passwd.
SHELL=/bin/sh
#
# Przesyłaj wyjście do użytkownika paul
MAILTO=paul
#
# Użyj następującej wartości zmiennej PATH
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/home/paul/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 do paula
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"

# z wykorzystaniem zapisu słownego ze znakiem "@"
@reboot          echo "System uruchomił się!"   # polecenie uruchamiane jednorazowo po uruchomieniu systemu
@yearly          echo "Minął kolejny rok!"      # odpowiednik zapisu "0 0 1 1 *"
@annually        echo "Minął kolejny rok!"      # j.w.
@monthly         echo "Minął kolejny miesiąc!"  # odpowiednik zapisu "0 0 1 * *"
@weekly          echo "Minął kolejny tydzień!"  # odpowiednik zapisu "0 0 * * 1"
@daily           echo "Minął kolejny dzień!"    # odpowiednik zapisu "0 0 * * *"
@midnight        echo "Minął kolejny dzień!"    # j.w.
@hourly          echo "Minęła kolejna godzina!" # odpowiednik zapisu "0 * * * *"

Pierwsza część pliku to definicje trzech zmiennych środowiskowych SHELL, MAILTO i PATH. Wartość zmiennej SHELL ustala powłokę w której cron będzie uruchamiał polecenia. Wartość zmiennej MAILTO określa użytkownika, któremu pocztą elektroniczną wysłany zostanie raport zawierający standardowy strumień wyjścia oraz standardowy strumień błędów, jeśli wykonywane polecenie umieści coś na jednym z nich. Zmienna PATH zawiera oddzielone dwukropkami ścieżki, których powłoka używa kolejno do odnalezienia plików wykonywalnych.

Druga część to już właściwa tabela zawierająca informacje o czasie uruchomienia i poszczególnych komendach dla każdego z zadań. W tej części linie nie będące komentarzem zawierają sześć kolumn. Pierwsze pięć określa czas uruchomienia zadania, szósta definiuje komendę, która ma zostać wykonana:

*    *    *    *    * komenda do wykonania
^     ^     ^     ^     ^
|     |     |     |     |
|     |     |     |     +----- dzień tygodnia (0 - 7) (niedziela=0, poniedziałek=1, wtorek=2, ..., niedziela=7)
|     |     |     |     
|     |     |     +------- miesiąc (1 - 12)
|     |     |     
|     |     +--------- dzień miesiąca (1 - 31)
|     |     
|     +----------- godzina (0 - 23)
|     
+------------- minuta (0 - 59)

Uwagi:

Zobacz też

Przypisy

  1. ↑ Co to jest cron? Jak działa? Jak używać? [online], Jak Wybrać Hosting? [dostęp 2023-03-09] (pol.).
  2. ↑ crontab(5): tables for driving cron - Linux man page [online], linux.die.net [dostęp 2017-11-22] (ang.).
  3. ↑ crontab(1) — cron — Debian stretch — Debian Manpages [online], manpages.debian.net [dostęp 2017-11-22] (ang.).
  4. ↑ OpenBSD manual pages [online], www.openbsd.org [dostęp 2017-11-22].
  5. ↑ nfsec.pl - Używanie znaku % we wpisach crontab