Generator wyrażeń cron
Zbuduj wyrażenie cron pole po polu, przeczytaj je słowami, sprawdź najbliższe uruchomienia w dowolnej strefie i przekształć je do systemd, Quartz lub AWS.
Opis słowami
Ustawiono zarówno dzień miesiąca, jak i dzień tygodnia: klasyczny cron uruchamia zadanie, gdy pasuje KTÓRYKOLWIEK z nich (nie oba naraz).
Kreator
| Pole | Tryb | Wartość |
|---|---|---|
| Sekunda0–59 | ||
| Minuta0–59 | ||
| Godzina0–23 | ||
| Dzień miesiąca1–31, L | ||
| Miesiąc1–12 lub JAN–DEC | ||
| Dzień tygodnia0–7 (0 i 7 = niedziela) lub SUN–SAT |
Najbliższe uruchomienia
Inne formaty
- wiersz crontab
- systemd OnCalendar=
- Quartz / Spring
- AWS EventBridge
Jak zbudować wyrażenie cron
- Wpisz lub wklej wyrażenie w polu Wyrażenie cron albo wybierz je z listy Gotowe wzorce. Akceptowane są też makra, takie jak
@dailyczy@weekly. - Możesz też użyć sekcji Kreator: dla każdego pola wybierz Tryb (Każda, Co N, Konkretne wartości, Zakres lub Własne) i uzupełnij Wartość. Wyrażenie aktualizuje się na bieżąco, a edycja wyrażenia aktualizuje kreator.
- Zaznacz Dodaj pole sekund (6 pól), jeśli twój harmonogram obsługuje sekundy.
- Przeczytaj harmonogram w sekcji Opis słowami – opis jest generowany po polsku – a potem sprawdź listę Najbliższe uruchomienia. Wybierz Strefa czasowa serwera, na którym działa zadanie, oraz w polu Ile pokazać liczbę uruchomień na liście.
- Skopiuj wyrażenie przyciskiem Kopiuj albo skorzystaj z jednego z Inne formaty.
Błędy są objaśniane pole po polu, np. „Minuta: 61 jest poza zakresem (0–59)”, więc wiesz dokładnie, co poprawić.
Pięć pól crona
Standardowy wiersz crona (Vixie cron) ma pięć pól, a po nich polecenie:
| Pole | Dozwolone wartości |
|---|---|
| Minuta | 0–59 |
| Godzina | 0–23 |
| Dzień miesiąca | 1–31 |
| Miesiąc | 1–12 lub JAN–DEC |
| Dzień tygodnia | 0–7 (0 i 7 to niedziela) lub SUN–SAT |
Każde pole przyjmuje * (każda wartość), listę 1,15, zakres 9-17, krok */15 (co 15 jednostek) albo zakres z krokiem 0-30/10. Zatem */15 9-17 * * 1-5 oznacza co 15 minut od 9:00 do 17:45, od poniedziałku do piątku.
Jedna zasada zaskakuje wiele osób: gdy ograniczysz jednocześnie Dzień miesiąca i Dzień tygodnia, klasyczny cron uruchamia zadanie, gdy pasuje którekolwiek z nich. 0 0 13 * 5 działa każdego 13. dnia miesiąca i w każdy piątek, a nie tylko w piątek trzynastego. Narzędzie wyświetla w takim przypadku ostrzeżenie.
Najbliższe uruchomienia i strefy czasowe
Cron korzysta z zegara maszyny albo z ustawienia CRON_TZ/TZ w crontabie. Lista Najbliższe uruchomienia jest liczona dla wybranej strefy czasowej, z uwzględnieniem zmiany czasu: przy wiosennej zmianie zadanie ustawione na 2:30 może zostać pominięte, a jesienią – zależnie od implementacji – uruchomić się raz albo dwa razy. Daty i godziny są wyświetlane w polskim formacie. Dla zadań, które muszą wykonać się dokładnie raz, wybieraj godziny spoza przedziału 1:00–3:00 albo używaj UTC.
Vixie cron, timery systemd, Quartz i AWS
- Timery systemd używają
OnCalendar=z inną składnią:Mon..Fri *-*-* 09..17:00/15:00. Warunki dnia tygodnia i daty są łączone przez AND, a nie OR, więc niektóre wyrażenia cron nie mają dokładnego odpowiednika. - Quartz i Spring stawiają na początku pole sekund i mogą dodać pole roku. Jedno z dwóch pól dnia musi zawierać
?, a Quartz numeruje dni tygodnia 1–7 od niedzieli, inaczej niż cron (0–6). Narzędzie zapisuje dni tygodnia nazwami (MON-FRI), aby uniknąć tej pułapki. - AWS EventBridge używa
cron(minutes hours day month weekday year): sześć pól, bez sekund,?w jednym z pól dnia i rok na końcu.
Standardowy cron nie ma pola sekund. Postać 6-polową z sekundami obsługuje wiele bibliotek (node-cron, Spring, Quartz), ale nie systemowy crontab.
Najczęściej zadawane pytania
Jak uruchamiać zadanie co 5 minut?
Użyj */5 * * * *. Zadanie wykona się w minutach 0, 5, 10… każdej godziny.
Jak uruchomić zadanie ostatniego dnia miesiąca?
Wiele harmonogramów akceptuje L w polu dnia miesiąca: 0 18 L * *. W zwykłym Vixie cron uruchamiaj zadanie codziennie w dniach 28–31 i sprawdzaj w skrypcie, czy jutro jest pierwszy dzień miesiąca.
Co robi @reboot?
Uruchamia polecenie jeden raz, przy starcie demona cron. Nie ma harmonogramu, więc narzędzie nie może pokazać dla niego terminów uruchomień.
Dlaczego moje zadanie nie uruchamia się o pokazanej godzinie?
Sprawdź strefę czasową serwera, to, czy edytujesz crontab użytkownika, czy /etc/crontab (który ma dodatkowe pole użytkownika), oraz zmienną PATH: cron startuje z minimalnym środowiskiem.
Niedziela to 0 czy 7?
Jedno i drugie. W polu dnia tygodnia 0 i 7 oznaczają niedzielę, 1 to poniedziałek, a 6 – sobota.
Podobne narzędzia
- Konwerter timestampów Unix Zamieniaj timestampy Unix w sekundach lub milisekundach na czytelne daty w czasie lokalnym, UTC i ISO 8601 oraz dowolną datę z powrotem na czas epoch.
- Przelicznik stref czasowych Przelicz datę i godzinę z jednej strefy czasowej na kilka innych naraz, z automatycznym uwzględnieniem czasu letniego. Wyszukaj dowolną strefę IANA.
- Kalkulator chmod Przeliczaj uprawnienia plików Unix między polami wyboru, zapisem ósemkowym (755) i symbolicznym (rwxr-xr-x), z setuid, setgid, sticky i gotowym chmod.