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
- Zawsze podawaj pełne ścieżki do skryptów i plików (np.
/home/user/skrypt.sh). - Testuj skrypt ręcznie, zanim dodasz go do
cron. - 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.