Nodea — logo

Cron

Cron to demon (usługa działająca w tle) systemów uniksowych i linuksowych, który automatycznie uruchamia polecenia oraz skrypty według zdefiniowanego harmonogramu. Nazwa pochodzi od greckiego chronos (czas). Cron jest obecny w praktycznie każdej dystrybucji Linuksa i stanowi podstawowe narzędzie automatyzacji zadań administracyjnych na serwerach.

Jak działa cron

Demon crona budzi się co minutę i sprawdza, czy w harmonogramach — plikach crontab użytkowników oraz systemowych katalogach typu /etc/cron.d — znajduje się zadanie do wykonania w bieżącej minucie. Każdy wpis harmonogramu składa się z pięciu pól czasu i polecenia:

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

Przykład: wpis 30 3 * * 1 /usr/local/bin/backup.sh uruchomi skrypt kopii zapasowej w każdy poniedziałek o 3:30. Gwiazdka oznacza „każdą wartość”, ukośnik pozwala definiować kroki (*/15 w polu minut = co kwadrans), a przecinki i zakresy — listy wartości. Dostępne są też skróty typu @daily, @hourly czy @reboot (przy starcie systemu).

Warto pamiętać, że cron uruchamia zadania w okrojonym środowisku: bez zmiennych sesji, z minimalnym PATH. To najczęstsza przyczyna sytuacji, w której skrypt działa z konsoli, a z crona już nie — rozwiązaniem jest podawanie pełnych ścieżek do programów i plików.

Zastosowanie w praktyce

Typowe zadania powierzane cronowi na serwerze to:

  • nocne kopie zapasowe baz danych i plików,
  • rotacja i czyszczenie logów oraz plików tymczasowych,
  • odnawianie certyfikatów SSL (np. Let's Encrypt),
  • wysyłka raportów i kolejek e-mail,
  • uruchamianie harmonogramów aplikacji — WordPress (wp-cron), Laravel (schedule:run), Magento.

Na hostingu współdzielonym zadania cron konfiguruje się zwykle przez panel (DirectAdmin, cPanel, Plesk), bez dostępu do konsoli; na VPS-ie administrator zarządza nimi bezpośrednio przez SSH. Dobrą praktyką jest logowanie wyniku każdego zadania i monitorowanie, czy faktycznie się wykonuje — cichy brak backupu bywa odkrywany dopiero wtedy, gdy kopia jest potrzebna.

Powiązane pojęcia

Najczęstsze pytania

Czym różni się cron od crontab i cron joba?

Cron to demon — usługa systemowa działająca w tle i pilnująca harmonogramu. Crontab to plik (i polecenie do jego edycji), w którym harmonogram jest zapisany. Cron job to pojedyncze zaplanowane zadanie, czyli jeden wiersz w crontabie.