Syntaxe cron výrazů
Cron výraz je pět polí, která popisují, kdy se má něco spustit. Každé pole říká, které hodnoty své jednotky jsou přípustné, a úloha se spustí v každé minutě, kdy se všech pět shoduje. To je celý model: neexistuje doba trvání, neexistuje "každých 90 minut" a nikde se neuchováva stav dalšího spuštění.
Pole se čtou zleva doprava jako minuta, hodina, den v měsíci, měsíc, den v týdnu. Příklady dole jsou ty, které lidé opravdu používají, a každý z nich je již projít vlastním cron parserem této stránky před výstavbou.
Poslední sekce uvádí syntaxi, která vypadá jako cron, ale zde se nepřijímá: rozšíření Quartzu a Jenkinsu a šestipolová forma se sekundami. Stojí za to je znát, protože zkopírovaný výraz, který některé z nich používá, prostě selže.
Pět polí
7Cron řádek je pět polí oddělených mezerou a pak příkaz. Každé pole musí být přítomné; žádné nelze vynechat.
| Výraz | Rozsah | Význam |
|---|---|---|
| * * * * * | min hod dom mes dow | Pět polí v pořadí: minuta, hodina, den v měsíci, měsíc, den v týdnuPět hvězd znamená každou minutu každého dne — nejvolnější výraz vůbec. |
| minute | 0-59 | První pole |
| hour | 0-23 | Druhé pole, 24hodinový formát |
| day of month | 1-31 | Třetí poleDen, který v daném měsíci neexistuje, se prostě přeskočí — 31 se spustí sedmkrát ročně, ne dvanáctkrát. |
| month | 1-12 | Čtvrté pole |
| day of week | 0-7 | Páté pole, neděle nejdříveNeděli znamená 0 i 7 — proto rozsah jde do sedmi, ne šesti. |
| 0 5 13 * 5 | Když jsou obě pole dne omezena, cron se spustí na kterékoli — ne oběToto běží na 13. a také každý pátek, takže to není "pátek 13.". Je to jediné pravidlo cronu, které překvapí každého. |
Operátory
10Stejné čtyři operátory fungují v každém poli; mění se pouze rozsah čísel, která přijímají.
| Výraz | Rozsah | Význam |
|---|---|---|
| * | Každá hodnota, kterou pole povoluje | |
| 1,15,30 | Seznam jednotlivých hodnot | |
| 9-17 | Rozsah včetně obou konců | |
| */15 | Každá n-tá hodnota v celém poli*/15 v poli minut znamená :00, :15, :30 a :45 — počítá se od začátku rozsahu, ne od teď. | |
| 9-17/2 | Každá n-tá hodnota v rozsahu | |
| 5/10 | Každá n-tá hodnota od počátečního bodu do konce pole | |
| 0,30 9-17 * * 1-5 | Operátory se volně kombinují v kterémkoliv poliKaždou a půl hodinu, mezi devítou a pátou, pondělí až pátek. | |
| JAN-DEC | 1-12 | Názvy měsíců, tři písmena, bez rozdílu velikosti |
| SUN-SAT | 0-6 | Názvy dní, tři písmena, bez rozdílu velikosti |
| 7 | 0 | Neděle, zapsaná druhým způsobem |
Zkrácená makra
7Sedm jmen, která nahrazují celý výraz. Jsou to pohodlí formátu crontab, ne gramatika polí — plánovač čtoucí cron řetězce je nemusí přijímat.
| Výraz | Rozsah | Význam |
|---|---|---|
| @hourly | 0 * * * * | Na vrcholu každé hodiny |
| @daily | 0 0 * * * | Jednou denně v půlnoci |
| @midnight | 0 0 * * * | Totéž jako @daily |
| @weekly | 0 0 * * 0 | Jednou týdně, neděle v půlnoci |
| @monthly | 0 0 1 * * | Prvního dne měsíce v půlnoci |
| @yearly | 0 0 1 1 * | Prvního ledna v půlnoci |
| @annually | 0 0 1 1 * | Totéž jako @yearly |
Příklady
14Čtěte je zprava doleva, když to ztrácí smysl: nejhrubší pole je vpravo a rozhoduje, které dny se vůbec jemných polí vyhodnocují.
| Výraz | Rozsah | Význam |
|---|---|---|
| * * * * * | Každou minutu | |
| */5 * * * * | Každých pět minut | |
| 0 * * * * | Každou hodinu, na její začátku | |
| 0,30 * * * * | Každou půl hodinu | |
| 0 3 * * * | Každý den v 03:00 | |
| 0 9,17 * * * | Dvakrát denně, v 09:00 a 17:00 | |
| */15 9-17 * * 1-5 | Každých čtvrt hodiny během pracovní doby v pracovní dny | |
| 0 8 * * 1-5 | Pracovní dny v 08:00 | |
| 0 10 * * 6,0 | Sobota a neděle v 10:00 | |
| 30 7 * * MON | Pondělí v 07:30 | |
| 0 0 1 * * | Půlnoc prvního dne měsíce | |
| 0 0 28-31 * * | Každý den v poslední části měsíceStandardní cron nemá "poslední den měsíce". Toto se spustí až čtyřikrát; obvyklá oprava je skript, který si zkontroluje datum a skončí. | |
| 0 0 1 1,4,7,10 * | Půlnoc prvního dne každého čtvrtletí | |
| 0 0 1 1 * | Jednou za rok, na začátku 1. ledna |
Rozšíření, která tato stránka nepřijímá
6Quartz, Jenkins a některé cloudové plánovače je přidávají. Jsou zde uvedena, abyste je poznali v cizím crontabu — parser na této stránce každý odmítá, stejně jako cron dodávaný se systémem Linux.
| Výraz | Rozsah | Význam |
|---|---|---|
| ? | "Žádná konkrétní hodnota" v poli dne, kterou už omezuje ten druhý | |
| L | Poslední den měsíce nebo poslední daný den v týdnu | |
| 15W | Pracovní den nejbližší 15. | |
| FRI#3 | Třetí pátek v měsíci | |
| */30 * * * * * | Šesté pole pro sekundy, vpředuŠest polí, ne pět. Quartz a několik knihoven to používají; soubor crontab ne. | |
| @reboot | Spustit jednou při startu strojeOpravdu v crontabu, ale není to plán — neexistuje další spuštění k výpočtu, proto jej parser zde odmítá. |