Generátor výrazov cron
Zostav výraz cron po poliach, prečítaj si ho jednoducho, zobraz najbližšie spustenia v ľubovoľnom časovom pásme a preveď ho do formátu systemd, Quartz či AWS.
Jednoducho povedané
Nastavený je deň v mesiaci aj deň v týždni: klasický cron sa spustí, keď sa zhoduje JEDEN Z NICH (nie oba).
Zostavovač
| Pole | Režim | Hodnota |
|---|---|---|
| Sekunda0–59 | ||
| Minúta0–59 | ||
| Hodina0–23 | ||
| Deň v mesiaci1–31, L | ||
| Mesiac1–12 alebo JAN–DEC | ||
| Deň v týždni0–7 (0 a 7 = nedeľa) alebo SUN–SAT |
Najbližšie spustenia
Iné formáty
- riadok crontabu
- systemd OnCalendar=
- Quartz / Spring
- AWS EventBridge
Ako vytvoriť výraz cron
- Napíš alebo vlož výraz do Výraz cron, alebo ho vyber z Predvoľby. Akceptujú sa aj makrá ako
@dailyči@weekly. - Alebo použi Zostavovač: pri každom poli vyber Režim (Každý, Každých N, Konkrétne hodnoty, Rozsah alebo Vlastné) a vyplň Hodnota. Výraz sa priebežne aktualizuje a úprava výrazu zase aktualizuje zostavovač.
- Zaškrtni Pridať pole sekúnd (6 polí), ak tvoj plánovač podporuje sekundy.
- Prečítaj si plán v sekcii Jednoducho povedané (v jazyku stránky, ak to knižnica na opis podporuje, inak po anglicky) a potom skontroluj zoznam Najbližšie spustenia. Vyber Časové pásmo servera, ktorý úlohu spúšťa, a Koľko spustení sa má vypísať.
- Výraz skopíruj tlačidlom Kopírovať, alebo použi niektorý z Iné formáty.
Chyby sa vysvetľujú po poliach, napríklad „Minúta: 61 je mimo rozsahu (0–59)“, takže presne vieš, čo opraviť.
Päť polí cron
Štandardný riadok cron (Vixie) má päť polí a potom príkaz:
| Pole | Povolené hodnoty |
|---|---|
| Minúta | 0–59 |
| Hodina | 0–23 |
| Deň v mesiaci | 1–31 |
| Mesiac | 1–12 alebo JAN–DEC |
| Deň v týždni | 0–7 (0 a 7 sú nedeľa) alebo SUN–SAT |
Každé pole prijíma * (každú hodnotu), zoznam 1,15, rozsah 9-17, krok */15 (každých 15 jednotiek) alebo rozsah s krokom 0-30/10. Takže */15 9-17 * * 1-5 znamená každých 15 minút od 9:00 do 17:45, od pondelka do piatka.
Jedno pravidlo mnohých prekvapí: keď sú obmedzené Deň v mesiaci aj Deň v týždni, klasický cron sa spustí, keď sa zhoduje ktorékoľvek z nich. 0 0 13 * 5 sa spustí každého 13. aj každý piatok, nielen v piatok trinásteho. V takom prípade nástroj zobrazí upozornenie.
Najbližšie spustenia a časové pásma
Cron používa hodiny stroja, prípadne nastavenie CRON_TZ/TZ v crontabe. Zoznam Najbližšie spustenia sa počíta pre zvolené časové pásmo vrátane prechodu na letný čas: pri jarnej zmene sa úloha nastavená na 2:30 môže preskočiť a na jeseň sa podľa implementácie môže spustiť raz alebo dvakrát. Pri úlohách, ktoré sa musia spustiť presne raz, uprednostni časy mimo 1:00–3:00 alebo použi UTC.
Cron Vixie, časovače systemd, Quartz a AWS
- Časovače systemd používajú
OnCalendar=s inou syntaxou:Mon..Fri *-*-* 09..17:00/15:00. Podmienky dňa v týždni a dátumu sa spájajú operátorom AND, nie OR, takže niektoré výrazy cron nemajú presný ekvivalent. - Quartz a Spring dávajú pole sekúnd na začiatok a môžu pridať pole roka. Jedno z dvoch polí dňa musí byť
?a Quartz čísluje dni v týždni 1–7 od nedele, na rozdiel od cronu s 0–6. Nástroj preto zapisuje dni v týždni ako názvy (MON-FRI), aby sa tejto pasci vyhol. - AWS EventBridge používa
cron(minutes hours day month weekday year): šesť polí, bez sekúnd, so?v jednom z polí dňa a rokom na konci.
Štandardný cron nemá pole sekúnd. Šesťpoľová forma so sekundami je podporovaná v mnohých knižniciach (node-cron, Spring, Quartz), no nie v systémovom crontabe.
Často kladené otázky
Ako spustím úlohu každých 5 minút?
Použi */5 * * * *. Úloha sa spustí v minútach 0, 5, 10… každej hodiny.
Ako spustím úlohu v posledný deň mesiaca?
Mnohé plánovače akceptujú L v poli dňa v mesiaci: 0 18 L * *. V čistom cron Vixie spúšťaj úlohu denne v dňoch 28–31 a v skripte over, či je zajtra 1.
Čo robí @reboot?
Spustí príkaz raz, pri štarte démona cron. Nemá žiadny plán, takže nástroj preň nevie vypísať časy spustenia.
Prečo sa moja úloha nespúšťa v zobrazenom čase?
Skontroluj časové pásmo servera, crontab používateľa oproti /etc/crontab (ktorý má pole navyše pre používateľa) a premennú PATH: cron štartuje s minimálnym prostredím.
Je nedeľa 0 alebo 7?
Obe. V poli dňa v týždni 0 aj 7 znamenajú nedeľu, 1 je pondelok a 6 je sobota.
Súvisiace nástroje
- Prevodník Unix timestamp Prevádzaj Unix timestamp v sekundách alebo milisekundách na čitateľný dátum v miestnom čase, UTC a ISO 8601 a ľubovoľný dátum zmeň späť na epoch čas.
- Prevodník časových pásiem Preveď dátum a čas z jedného časového pásma do viacerých naraz, so zohľadnením letného času. Vyhľadaj ľubovoľné pásmo IANA alebo mesto.
- Kalkulačka chmod Prevádzaj oprávnenia súborov Unixu medzi políčkami, osmičkovým (755) a symbolickým (rwxr-xr-x) zápisom, so setuid, setgid, sticky bitom a príkazmi chmod.