Przejdź do głównej zawartości

cron

Wprowadzenie

cron to usługa w systemach Unix/Linux, która umożliwia cykliczne uruchamianie zadań w określonych odstępach czasu. Zadania te są definiowane w specjalnych plikach zwanych crontab.


Podstawowe polecenia

Sprawdzenie, czy cron działa

systemctl status cron

lub w niektórych dystrybucjach:

systemctl status crond

Edycja harmonogramu dla bieżącego użytkownika

crontab -e

Wyświetlenie listy zadań w cron

crontab -l

Usunięcie harmonogramu użytkownika

crontab -r

Składnia wpisów w crontab

Każdy wpis w pliku crontab ma postać:

MINUTA  GODZINA  DZIEŃ_MIES  MIESIĄC  DZIEŃ_TYGODNIA  KOMENDA

Gdzie:

  • MINUTA: 0–59
  • GODZINA: 0–23
  • DZIEŃ_MIES: 1–31
  • MIESIĄC: 1–12 (lub nazwy: jan, feb, mar…)
  • DZIEŃ_TYGODNIA: 0–7 (0 i 7 = niedziela)
  • KOMENDA: Polecenie lub skrypt do uruchomienia

Przykłady wpisów

1. Uruchamianie skryptu co minutę

* * * * * /home/user/backup.sh

2. Codziennie o 2:30 w nocy

30 2 * * * /home/user/backup.sh

3. Co godzinę

0 * * * * /home/user/skrypt.sh

4. W każdy poniedziałek o 6:00 rano

0 6 * * 1 /home/user/skrypt.sh

Znaki specjalne w crontab

  • * – dowolna wartość (np. każda minuta)
  • , – lista wartości (np. 1,15,30)
  • - – zakres (np. 1-5)
  • / – krok (np. */5 = co 5 minut)

Przykład:

*/10 * * * * /home/user/skrypt.sh

Oznacza uruchomienie co 10 minut.


Logi cron

Działanie zadań crona można monitorować w logach systemowych:

tail -f /var/log/syslog

lub:

journalctl -u cron -f

Dobre praktyki

  1. Zawsze podawaj pełne ścieżki do skryptów i plików (np. /home/user/skrypt.sh).
  2. Testuj skrypt ręcznie, zanim dodasz go do cron.
  3. Przekierowuj wyjście i błędy do logów:
    * * * * * /home/user/skrypt.sh >> /home/user/skrypt.log 2>&1

Alternatywa – anacron

W przypadku laptopów i serwerów, które nie działają non-stop, zamiast cron można użyć anacron, który uruchomi zadania pominięte podczas wyłączenia systemu.