Cron — jak ustawić zadania cykliczne na serwerze (z przykładami)
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
| Zapis | Znaczenie | Przykład |
|---|---|---|
* | każda wartość | każda godzina |
5 | konkretna wartość | 5. minuta |
1,15 | lista | 1. i 15. dzień miesiąca |
9-17 | zakres | od 9 do 17 |
*/10 | krok | co 10 minut |
1-5 (dzień tygodnia) | poniedziałek–piątek | dni robocze |
Gotowe przykłady
| Wyrażenie | Kiedy |
|---|---|
*/5 * * * * | co 5 minut |
0 * * * * | co godzinę, o pełnej godzinie |
30 2 * * * | codziennie o 2:30 |
0 8 * * 1 | w poniedziałki o 8:00 |
0 9-17 * * 1-5 | co 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