tigtools

Objaśnienie wyrażeń cron

Wpisz pięciopolowy harmonogram cron, aby sprawdzić, co oznacza i kiedy nastąpi kolejne uruchomienie. Wszystkie obliczenia są wykonywane w przeglądarce.

Działa w przeglądarce Bez rejestracji

Pięć pól: minuta, godzina, dzień miesiąca, miesiąc, dzień tygodnia. Działają też skróty, takie jak @daily.

Popularne harmonogramy

Znaczenie

Co 15 minut, między 09:00 a 17:59, w dniu od poniedziałek do piątek.

Pola

Minuta
*/15
Godzina
9-17
Dzień miesiąca
*
Miesiąc
*
Dzień tygodnia
1-5
Strefa czasowa

Najbliższe 10 uruchomień

    Jak używać

    1. Wpisz lub wklej wyrażenie cron albo wybierz jeden z popularnych harmonogramów.
    2. Przeczytaj opis w przystępnym języku. Przy nieprawidłowych polach wyświetlana jest informacja o przyczynie błędu.
    3. Sprawdź 10 kolejnych terminów uruchomienia w lokalnej strefie czasowej. Jeśli Twój serwer działa w UTC, przełącz widok na UTC.
    4. Skopiuj terminy uruchomień, aby je udostępnić, albo zmień wyrażenie, aż uzyskasz potrzebny harmonogram.

    Jak to działa

    Standardowe wyrażenie cron, używane przez crontab w systemie Linux (Vixie cron i cronie) oraz wiele harmonogramów CI i usług hostingowych, składa się z pięciu pól oddzielonych spacjami: minuta (0–59), godzina (0–23), dzień miesiąca (1–31), miesiąc (1–12 lub JAN–DEC) i dzień tygodnia (0–7 lub SUN–SAT, przy czym zarówno 0, jak i 7 oznacza niedzielę). W każdym polu można użyć * (każda wartość), pojedynczej wartości, zakresu, np. 1-5, listy, np. 1,15,30, oraz kroku, np. */15 (co 15. wartość) lub 9-17/2 (co drugą godzinę od 9 do 17). Nazwy nie uwzględniają wielkości liter. Skróty @yearly (lub @annually), @monthly, @weekly, @daily (lub @midnight) i @hourly odpowiadają wyrażeniom 0 0 1 1 *, 0 0 1 * *, 0 0 * * 0, 0 0 * * * i 0 * * * *.

    Pola dnia miesiąca i dnia tygodnia podlegają regule, która często zaskakuje użytkowników. Jeśli jedno z tych pól zaczyna się od *, dzień musi spełniać warunki obu pól. Jeśli oba pola mają ograniczenia, dzień pasuje, gdy spełnia warunek któregokolwiek z nich: 0 0 13 * 5 uruchamia zadanie 13. dnia każdego miesiąca oraz w każdy piątek, a nie tylko w piątek trzynastego. Ponieważ sprawdzane jest, czy pole zaczyna się od *, krok, taki jak */2, również uznaje się za pole bez ograniczeń. Tak działa Vixie cron i cronie; niektóre inne harmonogramy działają inaczej.

    Godziny kolejnych uruchomień są obliczane w strefie czasowej przeglądarki lub w UTC, którego używa większość serwerów i harmonogramów w chmurze. Sam cron korzysta ze strefy czasowej komputera, na którym działa. Zachowanie rzeczywistych demonów cron podczas zmiany czasu na letni lub zimowy jest różne; to narzędzie pomija lokalne godziny, które nie występują przy przesunięciu zegarów do przodu, i wyświetla powtarzającą się godzinę tylko raz. Rozszerzone składnie nie są obsługiwane: sześcio- ani siedmiopolowe wyrażenia Quartz z sekundami lub latami oraz znaki specjalne ?, L, W i #.

    Przykłady

    Kontrola stanu w godzinach pracy

    */15 9-17 * * 1-5 oznacza uruchomienie co 15 minut między 09:00 a 17:59, od poniedziałku do piątku. Ostatnie uruchomienie każdego dnia odbywa się o 17:45.

    Nocna kopia zapasowa

    30 2 * * * uruchamia zadanie codziennie o 02:30. Jeśli serwer korzysta z UTC, a Ty jesteś w Nowym Jorku, lista kolejnych uruchomień w trybie UTC pokazuje godziny, których faktycznie użyje serwer.

    Pułapka pól dnia

    0 9 1 * 1 może wyglądać jak „o 9:00 pierwszego dnia miesiąca, jeśli wypada w poniedziałek”, ale uruchamia zadanie o 09:00 pierwszego dnia każdego miesiąca oraz w każdy poniedziałek. Aby uruchamiać je tylko w pierwszy poniedziałek, ustaw 0 9 1-7 * * i sprawdź dzień tygodnia w skrypcie.

    Często zadawane pytania

    Co oznacza */5 w cron?

    Oznacza co piątą wartość pola, zaczynając od jego najniższej wartości. W polu minut */5 oznacza minuty 0, 5, 10 … 55. W polu godzin */5 oznacza godziny 0, 5, 10, 15 i 20, więc przerwa od 20:00 do północy trwa cztery, a nie pięć godzin.

    Dlaczego moje zadanie uruchamia się częściej, niż się spodziewałem(-am)?

    Jeśli pola dnia miesiąca i dnia tygodnia mają ograniczenia, cron uruchamia zadanie w dniach pasujących do któregokolwiek z nich. Na przykład 0 0 15 * 1 uruchamia zadanie 15. dnia miesiąca oraz w każdy poniedziałek. Ustaw jedno z tych pól na *, aby uwzględnić tylko drugie.

    Z jakiej strefy czasowej korzysta cron?

    Cron korzysta ze strefy czasowej systemu serwera, na którym działa demon cron, chyba że w crontab ustawiono CRON_TZ lub TZ (obsługiwane przez cronie). Harmonogramy w chmurze często domyślnie używają UTC. Włącz tryb UTC, aby zobaczyć godziny używane przez serwer działający w UTC.

    Czy mogę użyć sekund lub pola roku?

    Nie w standardowym cron, który ma rozdzielczość jednej minuty i pięć pól. Format sześcio- i siedmiopolowy z sekundami i latami jest używany przez Quartz, Spring i podobne biblioteki, ale to narzędzie go nie obsługuje.

    Czy niedzielę oznacza 0, czy 7?

    Obie wartości są poprawne. W polu dnia tygodnia 0 i 7 oznaczają niedzielę, 1 — poniedziałek, a 6 — sobotę. Możesz też użyć trzyliterowych nazw od SUN do SAT.

    Prywatność

    Wyrażenie jest analizowane, a terminy uruchomień obliczane w przeglądarce. Wprowadzone dane nie są wysyłane, przechowywane ani uwzględniane w statystykach.