Syntax cron výrazov
Cron výraz je päť polí, ktoré opisujú, kedy sa má niečo spustiť. Každé pole hovorí, ktoré hodnoty svojej jednotky sú prípustné, a úloha sa spustí v každej minúte, na ktorej sa všetkých päť zhodne. To je celý model: neexistuje trvanie, neexistuje „každých 90 minút“ a nikde sa neuchováva stav ďalšieho spustenia.
Polia sa čítajú zľava doprava ako minúta, hodina, deň v mesiaci, mesiac, deň v týždni. Príklady dole sú tie, po ktorých ľudia naozaj siahajú, a každý z nich pred zostavením tejto stránky prejde vlastným cron parserom tejto stránky.
Posledná sekcia uvádza syntax, ktorá vyzerá ako cron, no tu sa neprijíma: rozšírenia Quartzu a Jenkinsu a šesťpoľový tvar so sekundami. Oplatí sa ich poznať, lebo skopírovaný výraz, ktorý niektoré z nich používa, jednoducho zlyhá.
Päť polí
7Cron riadok tvorí päť polí oddelených medzerami a za nimi príkaz. Každé pole musí byť prítomné; vynechať sa nedá žiadne.
| Výraz | Rozsah | Význam |
|---|---|---|
| * * * * * | min hod dom mes dow | Päť polí v poradí: minúta, hodina, deň v mesiaci, mesiac, deň v týždniPäť hviezdičiek znamená každú minútu každého dňa — najvoľnejší možný zápis. |
| minute | 0-59 | Prvé pole |
| hour | 0-23 | Druhé pole, v 24-hodinovom formáte |
| day of month | 1-31 | Tretie poleDeň, ktorý v danom mesiaci neexistuje, sa jednoducho preskočí — 31 sa spustí sedemkrát do roka, nie dvanásťkrát. |
| month | 1-12 | Štvrté pole |
| day of week | 0-7 | Piate pole, nedeľa ako prváNedeľu znamená 0 aj 7 — preto rozsah končí sedmičkou, nie šestkou. |
| 0 5 13 * 5 | Keď sú obmedzené obe polia dní, cron sa spustí pri ktoromkoľvek z nich — nie pri oboch narazToto beží 13. a zároveň každý piatok, takže to nie je „piatok trinásteho“. Je to jediné pravidlo cronu, ktoré prekvapí každého. |
Operátory
10Rovnaké štyri operátory fungujú v každom poli; mení sa len rozsah čísel, ktoré prijímajú.
| Výraz | Rozsah | Význam |
|---|---|---|
| * | Každá hodnota, ktorú pole pripúšťa | |
| 1,15,30 | Zoznam jednotlivých hodnôt | |
| 9-17 | Rozsah vrátane oboch koncov | |
| */15 | Každá n-tá hodnota v celom poli*/15 v poli minút znamená :00, :15, :30 a :45 — počíta sa od začiatku rozsahu, nie od aktuálneho času. | |
| 9-17/2 | Každá n-tá hodnota v rámci rozsahu | |
| 5/10 | Každá n-tá hodnota od východiskového bodu po koniec poľa | |
| 0,30 9-17 * * 1-5 | Operátory sa dajú ľubovoľne kombinovať v ktoromkoľvek poliKaždú celú a pol hodinu, medzi deviatou a piatou, od pondelka do piatka. | |
| JAN-DEC | 1-12 | Názvy mesiacov, tri písmená, nezáleží na veľkosti |
| SUN-SAT | 0-6 | Názvy dní, tri písmená, nezáleží na veľkosti |
| 7 | 0 | Nedeľa, zapísaná tým druhým spôsobom |
Skrátené makrá
7Sedem názvov, ktoré zastupujú celý výraz. Sú vlastnosťou formátu crontab, nie gramatiky polí — plánovač, ktorý číta cron reťazce, ich teda nemusí prijímať.
| Výraz | Rozsah | Význam |
|---|---|---|
| @hourly | 0 * * * * | Vždy na začiatku hodiny |
| @daily | 0 0 * * * | Raz denne o polnoci |
| @midnight | 0 0 * * * | To isté ako @daily |
| @weekly | 0 0 * * 0 | Raz týždenne, v nedeľu o polnoci |
| @monthly | 0 0 1 * * | Prvého v mesiaci o polnoci |
| @yearly | 0 0 1 1 * | Prvého januára o polnoci |
| @annually | 0 0 1 1 * | To isté ako @yearly |
Príklady
14Keď výraz prestane dávať zmysel, čítajte ho sprava doľava: najhrubšie pole je vpravo a rozhoduje o tom, v ktoré dni sa jemnejšie polia vôbec vyhodnocujú.
| Výraz | Rozsah | Význam |
|---|---|---|
| * * * * * | Každú minútu | |
| */5 * * * * | Každých päť minút | |
| 0 * * * * | Každú hodinu, vždy na jej začiatku | |
| 0,30 * * * * | Každú pol hodinu | |
| 0 3 * * * | Každý deň o 03:00 | |
| 0 9,17 * * * | Dvakrát denne, o 09:00 a 17:00 | |
| */15 9-17 * * 1-5 | Každú štvrťhodinu počas pracovných hodín v pracovné dni | |
| 0 8 * * 1-5 | V pracovné dni o 08:00 | |
| 0 10 * * 6,0 | V sobotu a nedeľu o 10:00 | |
| 30 7 * * MON | V pondelok o 07:30 | |
| 0 0 1 * * | O polnoci prvého dňa každého mesiaca | |
| 0 0 28-31 * * | Každý deň v poslednej časti mesiacaŠtandardný cron nepozná „posledný deň mesiaca“. Tento zápis sa spustí až štyrikrát; bežné riešenie je skript, ktorý si overí dátum a hneď skončí. | |
| 0 0 1 1,4,7,10 * | O polnoci prvého dňa každého štvrťroka | |
| 0 0 1 1 * | Raz ročne, na začiatku 1. januára |
Rozšírenia, ktoré táto stránka neprijíma
6Pridávajú ich Quartz, Jenkins a niektoré cloudové plánovače. Sú tu uvedené preto, aby ste ich spoznali v cudzom crontabe — parser na tejto stránke každý z nich odmietne, rovnako ako cron dodávaný s Linuxom.
| Výraz | Rozsah | Význam |
|---|---|---|
| ? | „Žiadna konkrétna hodnota“ v tom poli dňa, ktoré už obmedzuje to druhé | |
| L | Posledný deň mesiaca alebo posledný daný deň v týždni | |
| 15W | Pracovný deň najbližší k 15. | |
| FRI#3 | Tretí piatok v mesiaci | |
| */30 * * * * * | Šieste pole pre sekundy, vpreduŠesť polí, nie päť. Tento tvar používa Quartz a viacero knižníc; súbor crontab nie. | |
| @reboot | Spustiť raz pri štarte strojaV crontabe existuje, ale nie je to rozvrh — neexistuje ďalšie spustenie, ktoré by sa dalo vypočítať, a preto ho tunajší parser odmieta. |