Przejdź do treści

Cron — jak ustawić zadania cykliczne na serwerze (z przykładami)

Redakcja AMKBIT · · 1 min czytania

Kopie zapasowe w nocy, wysyłka newslettera co poniedziałek, czyszczenie plików co godzinę. Jak działa crontab, jak czytać wyrażenia */5 i 1-5 oraz dlaczego zadanie „nie działa”, choć wpis wygląda dobrze.

Cron to usługa systemów uniksowych (Linux, macOS), która uruchamia polecenia według harmonogramu. Na hostingach zwykle ustawia się ją w panelu („Zadania cron”, „Cron jobs”), a na własnym serwerze — poleceniem crontab -e.

Wpis w crontab

# min godz dzień mies dzień_tyg  polecenie
30  2    *     *    *          /usr/bin/php /home/user/skrypty/kopia.php >> /home/user/logi/kopia.log 2>&1

Pięć pól określa, kiedy polecenie ma się wykonać: minuta (0–59), godzina (0–23), dzień miesiąca (1–31), miesiąc (1–12) i dzień tygodnia (0–7, gdzie 0 i 7 to niedziela).

Składnia pól

ZapisZnaczeniePrzykład
*każda wartośćkażda godzina
5konkretna wartość5. minuta
1,15lista1. i 15. dzień miesiąca
9-17zakresod 9 do 17
*/10krokco 10 minut
1-5 (dzień tygodnia)poniedziałek–piątekdni robocze

Gotowe przykłady

WyrażenieKiedy
*/5 * * * *co 5 minut
0 * * * *co godzinę, o pełnej godzinie
30 2 * * *codziennie o 2:30
0 8 * * 1w poniedziałki o 8:00
0 9-17 * * 1-5co godzinę od 9 do 17 w dni robocze
0 0 1 * *pierwszego dnia miesiąca o północy

Dlaczego zadanie nie działa

  • Strefa czasowa: serwer może działać w UTC — „2:30” to wtedy 3:30 lub 4:30 czasu polskiego.
  • Ścieżki: cron ma ograniczoną zmienną PATH. Podawaj pełne ścieżki do programów (/usr/bin/php) i plików.
  • Uprawnienia: skrypt musi być wykonywalny (chmod 755) albo uruchamiany przez interpreter.
  • Brak logów: przekieruj wyjście do pliku (>> plik.log 2>&1) — inaczej błędy przepadają lub trafiają do lokalnej poczty.
  • Znak %: w crontab procent ma specjalne znaczenie (nowa linia); w poleceniach, np. w date +%F, trzeba go zapisać jako \%.
  • Zmiana czasu: zadania między 2:00 a 3:00 mogą w dniu zmiany czasu nie wykonać się albo wykonać dwa razy.

Dobre praktyki

  • Nie uruchamiaj wszystkiego o pełnej godzinie — wiele serwerów robi wtedy kopie i aktualizacje. Wybierz np. 2:37.
  • Długie zadania zabezpiecz przed nakładaniem się (np. flock).
  • Na hostingach współdzielonych nie ustawiaj zadań częściej niż to konieczne — wiele firm ogranicza minimalny odstęp.

Co oznacza dowolne wyrażenie i kiedy zadanie uruchomi się najbliższe 10 razy, sprawdzisz w tłumaczu wyrażeń cron. Uprawnienia plików ustawisz w kalkulatorze chmod.

Narzędzia do tego poradnika

croncrontabLinuxserwerautomatyzacjahosting

Przeczytaj też