Generátor výrazů cron
Sestav výraz cron pole po poli, přečti si ho lidsky, zobraz další termíny spuštění v libovolném časovém pásmu a převeď ho do formátu systemd, Quartz nebo AWS.
Lidsky řečeno
Je nastaven den v měsíci i den v týdnu: klasický cron se spustí, když platí JEDEN z nich (ne oba).
Konstruktor
| Pole | Režim | Hodnota |
|---|---|---|
| Sekunda0–59 | ||
| Minuta0–59 | ||
| Hodina0–23 | ||
| Den v měsíci1–31, L | ||
| Měsíc1–12 nebo JAN–DEC | ||
| Den v týdnu0–7 (0 a 7 = neděle) nebo SUN–SAT |
Další spuštění
Jiné formáty
- řádek crontabu
- systemd OnCalendar=
- Quartz / Spring
- AWS EventBridge
Jak sestavit výraz cron
- Napiš nebo vlož výraz do pole Výraz cron, nebo ho vyber v Předvolbách. Přijímají se i makra jako
@dailynebo@weekly. - Nebo použij Konstruktor: pro každé pole zvol Režim (Každý, Každých N, Konkrétní hodnoty, Rozsah nebo Vlastní) a vyplň Hodnotu. Výraz se průběžně aktualizuje a úprava výrazu aktualizuje konstruktor.
- Zaškrtni Přidat pole sekund (6 polí), pokud tvůj plánovač sekundy podporuje.
- Přečti si plán v části Lidsky řečeno (v jazyce stránky, protože knihovna s popisy češtinu podporuje) a zkontroluj seznam Další spuštění. Zvol Časové pásmo serveru, na kterém úloha běží, a Kolik spuštění vypsat.
- Výraz zkopíruj tlačítkem Kopírovat, nebo použij některý z Jiných formátů.
Chyby se vysvětlují pole po poli, například „Minuta: 61 je mimo rozsah (0–59)“, takže přesně víš, co opravit.
Pět polí cronu
Standardní řádek cronu (Vixie) má pět polí a poté příkaz:
| Pole | Povolené hodnoty |
|---|---|
| Minuta | 0–59 |
| Hodina | 0–23 |
| Den v měsíci | 1–31 |
| Měsíc | 1–12 nebo JAN–DEC |
| Den v týdnu | 0–7 (0 a 7 jsou neděle) nebo SUN–SAT |
Každé pole přijímá * (každou hodnotu), seznam 1,15, rozsah 9-17, krok */15 (každých 15 jednotek) nebo rozsah s krokem 0-30/10. Výraz */15 9-17 * * 1-5 tedy znamená každých 15 minut od 9:00 do 17:45, od pondělí do pátku.
Jedno pravidlo mnohé překvapí: když jsou omezeny Den v měsíci i Den v týdnu, klasický cron se spustí, když platí kterékoli z nich. 0 0 13 * 5 se spustí každého 13. a také každý pátek, nikoli jen v pátek 13. V takovém případě nástroj zobrazí upozornění.
Další termíny spuštění a časová pásma
Cron používá hodiny počítače nebo nastavení CRON_TZ/TZ v crontabu. Seznam Další spuštění se počítá pro zvolené časové pásmo včetně změn letního času: při jarní změně může být úloha nastavená na 2:30 přeskočena a na podzim se podle implementace spustí jednou nebo dvakrát. U úloh, které se musí spustit právě jednou, upřednostni časy mimo 1:00–3:00 nebo použij UTC.
Vixie cron, časovače systemd, Quartz a AWS
- Časovače systemd používají
OnCalendar=s odlišnou syntaxí:Mon..Fri *-*-* 09..17:00/15:00. Podmínky dne v týdnu a data se spojují operátorem AND, nikoli OR, takže některé výrazy cron nemají přesný ekvivalent. - Quartz a Spring dávají na začátek pole sekund a mohou přidat pole roku. Jedno ze dvou polí dne musí být
?a Quartz číslují dny v týdnu 1–7 od neděle, na rozdíl od cronu 0–6. Nástroj proto zapisuje dny v týdnu jako názvy (MON-FRI), aby se té pasti vyhnul. - AWS EventBridge používá
cron(minuty hodiny den měsíc den_v_týdnu rok): šest polí, bez sekund, s?v jednom z polí dne a s rokem na konci.
Standardní cron pole sekund nemá. Šestipolní tvar se sekundami podporuje mnoho knihoven (node-cron, Spring, Quartz), ale systémový crontab ne.
Časté dotazy
Jak spustit úlohu každých 5 minut?
Použij */5 * * * *. Úloha se spustí v minutách 0, 5, 10… každé hodiny.
Jak spustit úlohu poslední den v měsíci?
Mnoho plánovačů přijímá v poli dne v měsíci L: 0 18 L * *. U čistého Vixie cronu spouštěj úlohu denně ve dnech 28–31 a ve skriptu testuj, zda zítřek je 1.
Co dělá @reboot?
Spustí příkaz jednou, při startu démona cron. Nemá žádný plán, takže pro něj nástroj nemůže vypsat termíny spuštění.
Proč se moje úloha nespouští v zobrazenou dobu?
Zkontroluj časové pásmo serveru, crontab uživatele oproti /etc/crontab (ten má navíc pole uživatele) a proměnnou PATH: cron startuje s minimálním prostředím.
Je neděle 0, nebo 7?
Obojí. V poli dne v týdnu znamenají 0 a 7 neděli, 1 je pondělí a 6 sobota.
Související nástroje
- Převodník Unix timestampu Převeď Unix timestamp v sekundách nebo milisekundách na čitelné datum v místním čase, UTC a ISO 8601 a libovolné datum převeď zpět na epoch čas.
- Převodník časových pásem Převeď datum a čas z jednoho časového pásma do několika dalších najednou, s automatickým letním časem. Vyhledej libovolné pásmo IANA nebo město.
- Kalkulačka chmod Převáděj oprávnění souborů v Unixu mezi zaškrtávacími poli, osmičkovým (755) a symbolickým (rwxr-xr-x) zápisem, se speciálními bity a příkazy chmod.