Parser výrazov Cron

Rozbor výrazov cron a zobrazenie ľudsky čitateľného vysvetlenia ich spustenia. Ideálne pre vývojárov a správcov systému, ktorí potrebujú vytvoriť alebo pochopiť plány úloh cron. Vyhnite sa chybám pri plánovaní tým, že si presne zobrazíte, kedy sa vaše výrazy cron spustia.

Často kladené otázky

Výraz cron je reťazec 5 alebo 6 polí, ktorý definuje plán pre automatizované úlohy v systémoch podobných Unixu. Polia predstavujú: minútu (0-59), hodinu (0-23), deň v mesiaci (1-31), mesiac (1-12) a deň v týždni (0-7, kde 0 a 7 sú nedele). Napríklad "0 9 * * 1" znamená "spustiť každý pondelok o 9:00".

Začnite piatimi hviezdičkami (* * * * *), ktoré predstavujú minútu, hodinu, deň, mesiac a deň v týždni. Nahraďte hviezdičky konkrétnymi hodnotami alebo rozsahmi. Napríklad: "30 14 * * *" sa spustí denne o 14:30, "0 0 1 * *" sa spustí o polnoci 1. dňa v mesiaci, "*/15 * * * *" sa spustí každých 15 minút. Pomocou nášho analyzátora overte, či váš výraz robí to, čo očakávate.

Hviezdička znamená "každý" alebo "akýkoľvek" pre danú časovú jednotku. Napríklad * v poli hodiny znamená každú hodinu, * v poli dňa znamená každý deň. Takže "0 * * * *" znamená "v 0. minúte každej hodiny" (každú hodinu), zatiaľ čo "* * * * *" znamená "každú minútu". Je to zástupný znak, ktorý zodpovedá všetkým možným hodnotám pre dané pole.

Použite syntax hodnoty kroku: */N. Každých 5 minút: '*/5 * * * *'. Každé 3 hodiny: '0 */3 * * *'. Syntax */N znamená "každá N-tá hodnota" - takže */5 v poli minút znamená 0, 5, 10, 15 minút atď. Môžete tiež použiť rozsahy s krokmi, napríklad "0-30/5" pre každých 5 minút počas prvej polhodiny.

Áno! V poli deň v týždni (5. pole) uveďte 1-5. Napríklad "0 9 * * 1-5" sa spustí od pondelka do piatku o 9:00. Pondelok je 1 a piatok je 5. Môžete tiež uviesť konkrétne dni: "0 9 * * 1,3,5" sa spustí o 9:00 len v pondelok, stredu a piatok.

Ide o dva rôzne spôsoby, ako určiť, ktoré dni sa úloha spustí. Deň v mesiaci (3. pole) používa dátumy 1-31, zatiaľ čo deň v týždni (5. pole) používa dátumy 0-7 (0 a 7 sú nedele). Ak sú zadané obidve podmienky (nie *), úloha sa spustí, keď vyhovuje KTORÁKOĽVEK podmienka. Napríklad "0 0 1 * 1" sa spustí o polnoci 1. dňa v mesiaci A každý pondelok.

Pre dni od 9:00 do 17:00: "0 9-17 * * 1-5" sa spustí na začiatku každej hodiny. Počas pracovných hodín každých 30 minút: '*/30 9-17 * * 1-5'. Rozsah hodín 9-17 pokrýva čas od 9:00 do 17:00 a 1-5 obmedzuje vykonávanie na pondelok až piatok.

Sú rovnocenné - oba bežia denne o polnoci. Mnohé implementácie cronu podporujú špeciálne reťazce ako @daily, @hourly, @weekly, @monthly a @yearly ako skratky. Tie sú čitateľnejšie, ale menej flexibilné ako úplné výrazy. Pre bežné intervaly používajte skratky a pre vlastné plány plné výrazy.

Štandardné výrazy cronu sa spúšťajú na základe systémového času servera. Ak chcete spracovať časové pásma, buď správne nastavte časové pásmo servera, alebo vypočítajte časový rozdiel. Niektoré pokročilé implementácie cronu podporujú špecifikácie časových pásiem, ale základný formát 5 polí neobsahuje informácie o časovom pásme.

Pomocou nášho analyzátora výrazov Cron môžete overiť, či váš výraz zobrazuje očakávaný opis plánu. Parser vysvetľuje jednoduchou angličtinou, kedy sa vaša úloha spustí, a pomáha vám tak zachytiť chyby ako '0 9 31 2 *' (31. február neexistuje) pred nasadením do produkcie.