Polecenie cron w systemie Linux umożliwia automatyczne wykonywanie zaplanowanych zadań (skryptów, poleceń, kopii bezpieczeństwa) o określonych godzinach lub w regularnych odstępach czasu. Poniżej znajdziesz szczegółowy, krok po kroku poradnik dla początkujących i średniozaawansowanych użytkowników Linuksa.
1. Czym jest cron i crontab?
- cron to demon systemowy (czyli program działający w tle), który uruchamia zadania w określonych chwilach, zgodnie z harmonogramem zapisanym w plikach crontab.
- crontab (ang. „cron table”) to plik z listą zadań do wykonywania przez crona – każdy użytkownik może mieć własny plik crontab.
2. Podstawy obsługi crontaba
Edytowanie własnych zadań crona
Aby rozpocząć edycję własnego pliku crontab, użyj polecenia:
crontab -e
Uruchomi się domyślny edytor tekstu (np. nano, vi), w którym możesz wprowadzać zadania.
Wyświetlanie i usuwanie zadań
- Wyświetlenie własnych zadań:
crontab -l
- Usunięcie wszystkich zadań:
crontab -r
3. Składnia wpisów crona – jak to działa?
Każda linia w pliku crontab określa jedno zadanie według schematu:
MIN HOUR DAY MONTH DAYOFWEEK /ścieżka/do/polecenia lub skryptu
Gdzie:
- MIN – minuta (0–59)
- HOUR – godzina (0–23)
- DAY – dzień miesiąca (1–31)
- MONTH – miesiąc (1–12)
- DAYOFWEEK – dzień tygodnia (0–7), gdzie 0 i 7 to niedziela
Przykład zapisu –
0 3 * * * /home/user/backup.sh
Ten wpis uruchomi skrypt backup.sh
codziennie o godz. 3:00.
4. Przykłady harmonogramów
Harmonogram | Zapis crona | Wyjaśnienie |
---|---|---|
Co 5 minut | */5 * * * * polecenie |
W każdej piątej minucie |
Codziennie o 2:15 | 15 2 * * * polecenie |
O 2:15 w nocy |
W każdą niedzielę | 0 8 * * 0 polecenie |
O 8:00 w każdą niedzielę |
1. dnia miesiąca | 0 0 1 * * polecenie |
Północ w pierwszy dzień każdego miesiąca |
Znak * (gwiazdka) oznacza „każda wartość” w danym polu.
5. Planowanie zadań systemowych
Zadania ogólnosystemowe są przechowywane w pliku /etc/crontab
i mogą zawierać pole użytkownika, np.:
0 1 * * * root /usr/local/bin/system_maintenance.sh
Tutaj zadanie wykona się o 1:00 w nocy każdego dnia jako użytkownik root.
6. Automatyzacja katalogów – cron.hourly, cron.daily itd.
Systemy Linux często automatycznie wykonują skrypty z określonych katalogów w /etc/
:
/etc/cron.hourly
– co godzinę/etc/cron.daily
– codziennie/etc/cron.weekly
– co tydzień/etc/cron.monthly
– co miesiąc
Dodanie własnego pliku do tych katalogów sprawia, że zostanie automatycznie uruchomiony zgodnie z harmonogramem.
7. Typowe błędy i porady
- Ścieżka do polecenia – zawsze wpisuj pełną ścieżkę do wykonywanego skryptu lub programu (np.
/usr/bin/python3
zamiast tylkopython3
). - Zmienne środowiskowe – zadania cron działają w ograniczonym środowisku, zadbaj więc o ustawienie potrzebnych zmiennych np.
PATH
. - Logowanie efektów zadań – możesz przekierować wynik działania polecenia do pliku log, np.\
0 3 * * * /home/user/backup.sh >> /home/user/backup.log 2>&1
- Sprawdzanie logów crona – na większości systemów logi crona znajdziesz w
/var/log/syslog
lub/var/log/cron
.
8. Proste przykłady
- Uruchamianie skryptu PHP co dwie godziny –
0 */2 * * * /usr/local/php74/bin/php $HOME/public_html/myscript.php
To uruchomi skrypt co dwie godziny, o pełnej godzinie.
- Wykonywanie kopii zapasowej codziennie o 1:30 –
30 1 * * * /home/user/backup.sh
9. Testowanie i zarządzanie
- Aby sprawdzić poprawność składni, możesz przetestować zadania lokalnie, np. zapisać wynik działania do pliku.
- Jeśli masz wiele podobnych zadań lub chcesz testować różne konfiguracje, możesz stworzyć lokalny plik (np.
cron.txt
), wypełnić go wpisami, a następnie załadować komendą:\crontab ./cron.txt
10. Podsumowanie
cron to jedno z najważniejszych narzędzi do automatyzacji pracy w Linuksie. Pozwala regularnie wykonywać zadania, minimalizując nakład pracy i ryzyko pomyłek ludzkich. Dzięki stosowaniu opisanych tu zasad, możesz łatwo zaplanować dowolne procesy systemowe i użytkownika, korzystając z prostych i czytelnych harmonogramów.
Dzięki tej instrukcji wdrożysz własne zadania krok po kroku zarówno na serwerze, jak i na komputerze osobistym.