Administracja systemem Podstawowy+ 50 min

Zadania cykliczne: cron i podstawy systemd timers

Nauczysz się planować proste zadania przez cron, sprawdzać usługę crond oraz rozpoznawać i diagnozować podstawowe timery systemd.

Wróć do listy lekcji

1. Krótka teoria

Automatyzacja zadań cyklicznych pozwala regularnie wykonywać kopie, raporty i prace porządkowe. Użytkownik zarządza swoim harmonogramem przez crontab -e, a listę wpisów sprawdza przez crontab -l. Typowy wpis ma pięć pól czasu: minutę, godzinę, dzień miesiąca, miesiąc i dzień tygodnia, po których następuje polecenie. Gwiazdka oznacza każdą wartość, przecinek listę, myślnik zakres, a zapis z ukośnikiem krok. Cron uruchamia polecenia w ograniczonym środowisku, dlatego warto używać pełnych ścieżek do programów i plików, ustalać katalog roboczy oraz kierować standardowe wyjście i błędy do kontrolowanego logu. W Rocky Linux za wykonywanie zadań odpowiada usługa crond, a jej zdarzenia można sprawdzać w journalu. Systemd timers stanowią nowocześniejszy mechanizm powiązany z jednostkami service. Timer opisuje termin, a odpowiadająca mu usługa wykonuje pracę. systemctl list-timers pokazuje poprzednie i następne uruchomienie, a status oraz journal pomagają w diagnozie. Timery mogą korzystać z zależności systemd, czytelnych logów i opcji uruchomienia pominiętego zadania po wyłączeniu maszyny. Niezależnie od mechanizmu należy najpierw przetestować polecenie ręcznie i unikać zadań, których kolejne uruchomienia nakładają się lub niszczą dane.

2. Przykłady komend

crontab -l

Wyświetla wpisy crona aktualnego użytkownika.

$ crontab -l
crontab -e

Otwiera harmonogram aktualnego użytkownika do bezpiecznej edycji.

$ crontab -e
*/5 * * * * /usr/bin/date >> /tmp/cron-date.log 2>&1

Uruchamia date co pięć minut i zapisuje wyjście oraz błędy.

*/5 * * * * /usr/bin/date >> /tmp/cron-date.log 2>&1
systemctl status crond

Sprawdza stan usługi wykonującej zadania cron.

$ systemctl status crond
journalctl -u crond --since "1 hour ago"

Pokazuje zdarzenia crond z ostatniej godziny.

$ journalctl -u crond --since "1 hour ago"
systemctl list-timers --all

Wyświetla aktywne i nieaktywne timery wraz z terminami.

$ systemctl list-timers --all
systemctl status dnf-makecache.timer

Pokazuje stan przykładowego timera systemd.

$ systemctl status dnf-makecache.timer
systemctl cat dnf-makecache.timer

Wyświetla definicję timera i jego ustawienia czasu.

$ systemctl cat dnf-makecache.timer
journalctl -u dnf-makecache.service -n 30

Pokazuje logi usługi uruchamianej przez przykładowy timer.

$ journalctl -u dnf-makecache.service -n 30

3. Zadanie praktyczne

Najpierw wykonaj ręcznie /usr/bin/date. Następnie dodaj przez crontab -e wpis uruchamiający to polecenie co pięć minut i zapisujący wynik do /tmp/cron-date.log. Sprawdź wpis przez crontab -l, stan crond oraz po kilku minutach zawartość pliku wynikowego. Jeśli zadanie nie działa, przeanalizuj journalctl -u crond --since "15 minutes ago". Potem wyświetl systemctl list-timers --all, znajdź dnf-makecache.timer i sprawdź jego status, definicję oraz logi powiązanej usługi. Po ćwiczeniu usuń wyłącznie dodany przez siebie wpis z crontaba.

4. Typowe błędy

  • Niepoprawna kolejność pięciu pól czasu w crontabie użytkownika.
  • Używanie względnych ścieżek i zakładanie takiego samego środowiska jak w terminalu.
  • Brak przekierowania wyjścia i błędów, przez co zadanie trudno diagnozować.
  • Dodawanie zadania bez wcześniejszego ręcznego przetestowania polecenia.
  • Mylenie crontaba użytkownika z /etc/crontab, który zawiera dodatkowe pole użytkownika.
  • Sprawdzanie tylko timera systemd bez logów uruchamianej jednostki service.
  • Planowanie częstych zadań bez uwzględnienia nakładania się kolejnych uruchomień.

5. Podsumowanie

crontab -e edytuje harmonogram użytkownika, a pięć pól określa czas wykonania. Zadania cron powinny używać pełnych ścieżek i zapisywać błędy. Stan crond oraz jego journal pomagają w diagnozie. Systemd timer określa harmonogram, a powiązana jednostka service wykonuje pracę; oba elementy trzeba sprawdzać osobno.

Flow nauki
  1. Teoria
  2. Przykład
  3. Ćwiczenie
  4. Quiz
  5. Praktyka
  6. Podsumowanie