Cron job - co to jest i do czego służy?
Spis treści
Spis treści
Kopie zapasowe bazy danych, odświeżanie mapy strony, czyszczenie cache, wysyłka newslettera – przy prowadzeniu strony internetowej jest sporo zadań, które trzeba powtarzać regularnie, najlepiej o stałych porach. Można pilnować ich ręcznie… tylko po co, skoro serwer może zrobić to sam? Do tego służą cron joby. Poniżej wyjaśnimy, czym są i jak działają.
Co to jest cron job?
Cron job to zadanie, które system wykonuje automatycznie według ustalonego wcześniej harmonogramu – na przykład co 15 minut, codziennie o 3:00 w nocy albo pierwszego dnia każdego miesiąca. Z reguły chodzi o uruchomienie jakiegoś skryptu lub pojedynczego polecenia; o to, żeby stało się to o czasie, dba już cron.
Od razu warto tu rozróżnić trzy pojęcia:
- cron to program działający w tle w systemach uniksowych, czyli m.in. w Linuksie i macOS, który pilnuje harmonogramu i uruchamia zadania;
- crontab file (od cron table) to plik z listą zadań i harmonogramem ich wykonywania; każdy użytkownik systemu może mieć własny;
- zaś cron job to pojedyncze zadanie, czyli jeden wiersz w crontabie.
Cron jako narzędzie pojawił się w systemach Unix mniej więcej w tym samym okresie, co pierwsze komputery osobiste, jeszcze w połowie lat 70. Swoje odpowiedniki ma też w innych środowiskach: w Windowsie podobną rolę pełni Harmonogram zadań, a np. w WordPressie – WP-Cron, o którym jeszcze powiemy.
Jak działa cron?
Cron działa jako tzw. demon, czyli proces, który cały czas pracuje w tle systemu. Co minutę „budzi się”, przegląda crontaby i sprawdza, czy któreś z zapisanych w nich zadań nie powinno właśnie zostać uruchomione. Jeśli tak – wykonuje je i „zasypia” na kolejną minutę.
W praktyce wystarczy więc raz zapisać zadanie w crontabie, a cron będzie je wykonywał, dopóki go stamtąd nie usuniemy.
Jak zapisać harmonogram, czyli składnia crontab file
Każdy wiersz w crontabie składa się z pięciu pól określających czas wykonania zadania oraz z polecenia, które ma zostać uruchomione. Dla przykładu wpis:
0 3 * * * /home/uzytkownik/backup.sh
oznacza „uruchamiaj skrypt backup.sh codziennie o 3:00”. Kolejne pola to:
- minuta (0-59);
- godzina (0-23);
- dzień miesiąca (1-31);
- miesiąc (1-12);
- dzień tygodnia (0-7, przy czym zarówno 0, jak i 7 oznaczają niedzielę).
Wartości można też łączyć za pomocą znaków specjalnych:
- gwiazdka (*) – dowolna wartość, czyli „każda minuta”, „każdy dzień” itd.;
- przecinek (,) – lista wartości, np. 1,15 w polu dnia miesiąca to 1. i 15. dzień miesiąca;
- myślnik (-) – zakres, np. 1-5 w polu dnia tygodnia to dni robocze;
- ukośnik (/) – krok, np. */15 w polu minut oznaczałoby „co 15 minut”.
Wpis 0 9 * * 1-5 uruchomi więc zadanie o godzinie 9:00 w każdy dzień roboczy. W prostszych przypadkach można też korzystać ze skrótów, takich jak @daily (raz na dobę, o północy), @weekly, @monthly czy @reboot (przy każdym starcie systemu). A jeśli nie masz pewności, czy dobrze zapisałeś harmonogram zadania, od tego jest darmowe narzędzie crontab.guru, w którym możesz przetłumaczyć wyrażenia crona na angielski.

Zdj 1. Składania, przy pomocy której zapisujemy cron jobs, wbrew pozorom jest dosyć prosta – trzeba znać tylko kilka reguł.
Źródło: crontab.guru
Do czego służy cron job? Najczęstsze zastosowania
Najprościej byłoby odpowiedzieć, że… do wszystkiego, co trzeba robić regularnie i co nie wymaga udziału człowieka. Cron jobs potrafią bardzo mocno ułatwić np. pracę administratora strony albo e-sklepu, bo jeśli dobrze skonfigurujemy je na serwerze witryny, to mogą za niego zająć się:
- kopiami zapasowymi – np. codziennie w nocy wykonywać backup bazy danych i plików, a potem przesyłać go na zewnętrzny serwer;
- aktualizacją danych – czy to na mapie strony XML, czy np. w feedzie produktowym;
- porządkami na serwerze – czyszczeniem cache, usuwaniem starych logów i plików tymczasowych, które potrafią czasem zająć zaskakująco dużo miejsca;
- wysyłką wiadomości i raportów – newsletterów, przypomnień o porzuconych koszykach, cotygodniowych raportów SEO z Google Search Console;
- monitoringiem – np. sprawdzać, czy strona na pewno odpowiada na zapytania albo czy nie zbliża się termin wygaśnięcia certyfikatu SSL.
WP-Cron, czyli „cron” w WordPressie
Co ciekawe, własny, wbudowany system planowania zadań ma nawet WordPress. Dzięki niemu admin strony może, powiedzmy, zaplanować z wyprzedzeniem publikację wpisów na blogu, a wtyczki CMS-a same sprawdzają dostępność aktualizacji. Bardzo przydatne; haczyk polega na tym, że WP-Cron nie działa w tle, tylko uruchamia się… przy każdych odwiedzinach strony.

Zdj 2. WP-Cron nie działa do końca tak, jak prawdziwy cron, raczej naśladuje jego funkcje.
Źródło: kinsta.com/blog/wordpress-cron-job
Z tego wynikają dwa problemy. Na rzadko odwiedzanych witrynach zadania potrafią się mocno spóźniać, z kolei na stronach z dużym ruchem cron jobs potrafią odbić się na wydajności, bo WordPress przy każdej wizycie musi uruchomić skrypt wp-cron.php.
Dlatego też wielu administratorów po prostu wyłącza wbudowanego WP-Cron – wystarczy linijka define(’DISABLE_WP_CRON’, true) w pliku wp-config.php – w jego miejsce ustawia prawdziwy cron job, który wywołuje plik wp-cron.php np. co kilka minut.
Najprostszy sposób na automatyzację zadań
Cron to narzędzie stare niczym pierwsze PC-ty, bardzo proste i… właśnie dlatego tak przydatne. Sam z siebie niczego nie robi, tylko pilnuje, żeby rzeczy na serwerze działy się na czas – ale dzięki temu może zdjąć z głowy administratora całą listę tasków, których zaniedbanie potrafi sporo kosztować.
Zainteresował Cię ten temat? Zachęcamy również do lektury kolejnych wpisów w naszym słowniku oraz na blogu Semcore!
swój potencjał z
polityką prywatności