Informatyka
Wyrażenia cron wyjaśnione
Wklej wiersz crontab bez polecenia: otrzymasz opis słowami, tabelę wartości minut, godzin, dni, miesięcy i dni tygodnia oraz najbliższe daty, w których zadanie się uruchomi.
Jak czytać wiersz crontab
Wyrażenie cron ma pięć pól: 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). Gwiazdka oznacza „dowolny”, przecinek oddziela wartości, myślnik określa zakres, a ukośnik krok: */15 w minutach oznacza 0, 15, 30 i 45.
Tak więc 0 9 * * 1-5 uruchamia zadanie o 9:00 od poniedziałku do piątku, 30 2 1 * * o 2:30 pierwszego dnia każdego miesiąca, a */10 * * * * co dziesięć minut. Makra to skróty: @daily to 0 0 * * *, @hourly to 0 * * * *, @weekly to 0 0 * * 0.
Jeden wyjątek zaskakuje wielu: jeśli zarówno dzień miesiąca, jak i dzień tygodnia różnią się od *, cron uruchamia zadanie, gdy prawdziwy jest którykolwiek z nich. 0 12 1 * 1 nie znaczy „pierwszego dnia miesiąca, jeśli to poniedziałek”, lecz „każdego pierwszego dnia miesiąca i w każdy poniedziałek”.
Częste błędy
- Pisanie * * * * * w znaczeniu „raz dziennie”: to oznacza co minutę.
- Zapominanie, że cron używa strefy czasowej serwera, a nie oglądającego: najbliższe uruchomienia są tu w strefie twojej przeglądarki.
- Oczekiwanie zadania 31. dnia każdego miesiąca: w miesiącach 30-dniowych i w lutym po prostu się nie uruchomi.
Najczęstsze pytania
Czy cron obsługuje sekundy?
Klasyczny cron nie: najmniejszą jednostką jest minuta. Niektóre systemy, jak Quartz czy Spring, dodają szóste pole na sekundy, ale z inną składnią.
Co się dzieje przy zmianie czasu?
W nocy, gdy zegar przesuwa się do przodu, zadanie o 2:30 może zostać pominięte; przy cofnięciu może uruchomić się dwa razy. Dlatego ważne zadania planuje się poza godzinami 2-3 lub w UTC.
Czy mogę używać nazw dni i miesięcy?
Tak: MON-FRI dla dni i JAN-DEC dla miesięcy, po angielsku i bez rozróżniania wielkości liter.
Jak działa to obliczenie
Każde pole jest rozwijane w zbiór dozwolonych wartości: * to cały zakres, a-b zakres, x/n wartości od x z krokiem n, a listy rozdzielone przecinkami są łączone. W dniu tygodnia 7 zamienia się na 0 (niedziela). Dzień pasuje, jeśli jego miesiąc jest dozwolony, a gdy oba pola dni są ograniczone – jeśli pasuje dzień miesiąca lub dzień tygodnia. Najbliższe uruchomienia są szukane dzień po dniu, do ośmiu lat naprzód, w strefie czasowej przeglądarki.
Powiązane kalkulatory
Formatowanie i walidacja JSON
Formatuj, minifikuj i sprawdzaj JSON: wcięcia, sortowane klucze i dokładne położenie błędów.
Tester wyrażeń regularnych
Sprawdź regex na tekście: podświetlone dopasowania, grupy przechwytujące i zamiana, w JavaScripcie.
Konwerter Unix timestamp
Z Unix timestamp na datę i godzinę i z powrotem: sekundy, milisekundy, UTC i czas lokalny.