Jak używać
- Wpisz lub wklej wyrażenie cron albo wybierz jeden z popularnych harmonogramów.
- Przeczytaj opis w przystępnym języku. Przy nieprawidłowych polach wyświetlana jest informacja o przyczynie błędu.
- Sprawdź 10 kolejnych terminów uruchomienia w lokalnej strefie czasowej. Jeśli Twój serwer działa w UTC, przełącz widok na UTC.
- 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.