Cron - planowanie zadań w UNIX/Linux: definicja, crontab i przykłady

Cron w UNIX/Linux — przewodnik po crontab, planowaniu zadań i praktycznych przykładach automatyzacji. Proste instrukcje tworzenia i zarządzania zadaniami.

Autor: Leandro Alegsa

Cron to program komputerowy, który może być używany do wykonywania zadań przez komputer w określonych odstępach czasu. Jest on używany w systemach operacyjnych UNIX i systemach operacyjnych, które są podobne do UNIX, takich jak Linux. Jest to standardowe narzędzie do automatyzacji powtarzalnych operacji — od prostych poleceń po skrypty administracyjne.

Cron może być użyty do zaplanowania większości powtarzających się zadań. Jest on często używany do automatyzacji zadań związanych z utrzymaniem i administracją komputera lub sieci komputerowej, chociaż może być używany do wielu innych zadań, takich jak pobieranie plików z Internetu i pobieranie poczty elektronicznej w określonym czasie lub dacie. Cron wykonuje komendy w tle zgodnie z harmonogramem zapisanym w pliku zadań, zwanym crontab.

Nazwa programu komputerowego cron pochodzi od słowa cron, które pochodzi od greckiego słowa oznaczającego czas, χρόνος (chronos).

Cron jest ustawiany poprzez edycję pliku zwanego crontab (tabela crona). Plik ten zawiera listę konkretnych zadań do wykonania na komputerze i kiedy te zadania powinny być wykonywane. Poniżej opisano format crontaba, przykłady użycia oraz dobre praktyki.

Format pliku crontab

Standardowy wpis w crontab składa się z pięciu pól określających czas oraz polecenia, np.:

 minuta godzina dzień-miesiąca miesiąc dzień-tygodnia polecenie 

Znaczenie pól:

  • minuta — 0–59
  • godzina — 0–23
  • dzień-miesiąca — 1–31
  • miesiąc — 1–12
  • dzień-tygodnia — 0–7 (0 i 7 oznaczają niedzielę)

Wartości można łączyć:

  • gwiazdka (*) — dowolna wartość
  • lista wartości — np. 1,15,30
  • zakres — np. 1-5
  • krok — np. */5 (co 5 jednostek)

Są też specjalne słowa kluczowe ułatwiające tworzenie harmonogramów:

  • @reboot — uruchom przy starcie systemu
  • @yearly lub @annually — raz w roku
  • @monthly — raz w miesiącu
  • @weekly — raz w tygodniu
  • @daily lub @midnight — raz dziennie
  • @hourly — raz na godzinę

Uwaga: plik systemowy /etc/crontab i pliki w katalogu /etc/cron.d/ mają dodatkowe pole określające użytkownika, który ma wykonać polecenie — czyli w tych plikach po polach czasu występuje pole user, a potem polecenie.

Podstawowe polecenia do obsługi crontab

  • crontab -e — edytuj crontab dla bieżącego użytkownika
  • crontab -l — wyświetl crontab bieżącego użytkownika
  • crontab -r — usuń crontab bieżącego użytkownika

W systemie może też działać demon crona pod różnymi nazwami (np. cron lub crond). Zarządzanie usługą wykonywane jest np. przez systemd: sudo systemctl status cron, sudo systemctl restart cron (na Debian/Ubuntu) lub sudo systemctl restart crond (na innych dystrybucjach).

Przykłady wpisów w crontab

 # codziennie o 02:30 30 2 * * * /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1  # co 5 minut */5 * * * * /usr/local/bin/check_updates.sh  # w poniedziałek o 08:00 0 8 * * 1 /home/user/scripts/weekly_report.sh  # pierwszy dzień każdego miesiąca o 03:00 0 3 1 * * /usr/local/bin/monthly_maintenance.sh  # uruchom przy starcie systemu @reboot /home/user/bin/startup_task.sh 

W przykładach używamy pełnych ścieżek do poleceń i plików logów — to ważne, ponieważ środowisko uruchomione przez cron ma ograniczony PATH i nie ładuje profili użytkownika.

Dobre praktyki i uwagi

  • Używaj pełnych ścieżek do programów i skryptów (np. /usr/bin/python3, /home/user/script.sh).
  • Zadbaj, by skrypty miały prawa do wykonania (np. chmod +x script.sh).
  • Przekierowuj wyjście STDOUT i STDERR do pliku logu: >> /var/log/task.log 2>&1, albo ustaw MAILTO w crontab, żeby otrzymywać wyniki emailem (jeśli system ma skonfigurowaną wysyłkę poczty).
  • Pamiętaj, że plik crontab użytkownika nie zawiera pola user; to pole istnieje w /etc/crontab i plikach /etc/cron.d/*.
  • Jeśli zadanie ma być wykonane na komputerze, który nie zawsze jest włączony (np. laptop), rozważ użycie anacron, które zapewnia wykonanie zadań nawet po przerwie w działaniu systemu.
  • Cron działa na podstawie czasu systemowego — zmiany czasu (DST) mogą spowodować, że zadanie zostanie uruchomione dwukrotnie lub zostanie pominięte.
  • Sprawdzaj logi: w wielu dystrybucjach logi crona znajdują się w /var/log/cron lub w ogólnym /var/log/syslog.
  • Unikaj w crontab zapisywania wrażliwych danych (hasła w jawnej postaci).

Różnice między crontab użytkownika a plikami systemowymi

Pliki użytkowników edytowane przez crontab -e dotyczą tylko danego konta i są uruchamiane jako ten użytkownik. Pliki w /etc/crontab i /etc/cron.d/ pozwalają administratorowi na ustawienie zadań uruchamianych jako wybrany użytkownik (pole user jest wymagane). Dodatkowo katalogi takie jak /etc/cron.daily/, /etc/cron.hourly/ zawierają skrypty uruchamiane odpowiednio raz dziennie lub co godzinę, zwykle przez systemowy mechanizm konfiguracyjny.

Przykładowe problemy i jak je rozwiązać

  • Brak wykonania zadania: sprawdź logi, upewnij się, że używasz pełnych ścieżek i że skrypt ma prawa do wykonania.
  • Brak maili z wynikami: upewnij się, że serwer poczty jest skonfigurowany, lub kieruj wyjście do pliku.
  • Zadanie uruchamiane wielokrotnie lub pomijane po zmianie czasu: to efekt DST — rozważ użycie dodatkowych mechanizmów synchronizacji lub anacron.

Podsumowując, cron to proste i potężne narzędzie do planowania zadań w systemach typu UNIX/Linux. Znajomość formatu crontab, dobrych praktyk (pełne ścieżki, logowanie, uprawnienia) oraz różnic między crontab użytkownika a systemowym pozwoli na bezpieczne i niezawodne automatyzowanie pracy serwera lub stacji roboczej.

Pytania i odpowiedzi

P: Czym jest Cron?


O: Cron to program komputerowy służący do planowania zadań w określonych odstępach czasu.

P: Gdzie używany jest Cron?


O: Cron jest używany w komputerowych systemach operacyjnych UNIX i systemach operacyjnych podobnych do UNIX, takich jak Linux.

P: Jakie zadania można zaplanować za pomocą Cron?


O: Większość powtarzalnych zadań można zaplanować za pomocą Cron. Jest często używany do automatyzacji zadań związanych z konserwacją lub administracją komputera lub sieci komputerowej, chociaż może być używany do wielu innych zadań, takich jak pobieranie plików z Internetu i pobieranie wiadomości e-mail o określonych godzinach lub datach.

P: Od czego pochodzi nazwa Cron?


O: Nazwa programu komputerowego Cron pochodzi od słowa cron, które pochodzi od greckiego słowa oznaczającego czas, χρόνος (chronos).

P: Jak konfiguruje się Crona?


O: Cron jest konfigurowany poprzez edycję pliku zwanego crontab (tabela cron). Plik ten zawiera listę konkretnych zadań do uruchomienia na komputerze i kiedy zadania powinny zostać uruchomione.

P: Co to jest crontab?


O: Crontab to plik, który zawiera listę określonych zadań do uruchomienia na komputerze i kiedy zadania te powinny zostać uruchomione.

P: Do jakiego rodzaju powtarzalnych zadań może być używany Cron?


O: Większość powtarzalnych zadań związanych z konserwacją lub administracją komputera lub sieci komputerowej można zautomatyzować za pomocą Crona. Może być również używany do wielu innych zadań, takich jak pobieranie plików z Internetu i pobieranie wiadomości e-mail o określonych godzinach lub datach.


Przeszukaj encyklopedię
AlegsaOnline.com - 2020 / 2025 - License CC3