CodeKitHub
Nástroje pre kód

Generátor Cron Výrazov

Naposledy aktualizované:

Cron výraz je päťpoľový reťazec (minúta, hodina, deň v mesiaci, mesiac, deň v týždni), ktorý plánovaču ako Unix cron, crontab alebo CI/CD pipeline hovorí presne, kedy má úlohu spustiť — napríklad `*/15 9-17 * * MON-FRI` znamená "každých 15 minút, medzi 9. a 17. hodinou, od pondelka do piatku". Tento nástroj funguje oboma smermi: vytvor rozvrh pomocou jednoduchých rozbaľovacích menu a získaj cron reťazec, alebo vlož existujúci cron výraz a okamžite uvidíš zrozumiteľný preklad a nasledujúcich 5 momentov, kedy sa naozaj spustí. Riadi sa štandardnou 5-poľovou POSIX/Vixie cron syntaxou používanou Unixom, Linux crontabom a väčšinou plánovačov úloh — pozri man stránku crontab(5) pre kanonickú špecifikáciu. Všetko beží lokálne v prehliadači; nič, čo napíšeš, sa nikam nenahráva.

Description
Next 5 runs
    Builder
    Minute
    Hour
    Day of month
    Month
    Day of week
    Syntax legend
    • * — any value
    • , — value list separator (e.g. 1,3,5)
    • - — range of values (e.g. 1-5)
    • / — step values (e.g. */15 = every 15)

    Čo je tento nástroj?

    Cron výraz je kompaktný, päťpoľový reťazec rozvrhu — `minúta hodina deň-v-mesiaci mesiac deň-v-týždni` — používaný démonom Unix `cron` a prakticky každým plánovačom úloh modelovaným podľa neho (crontab, Kubernetes CronJobs, `schedule:` v GitHub Actions, Airflow, Jenkins). Každé pole prijíma hviezdičku (`*`, čo znamená "akákoľvek hodnota"), konkrétne číslo, zoznam oddelený čiarkami (`1,15,30`), rozsah (`9-17`), krok (`*/15`, čo znamená "každých 15 jednotiek") alebo — pri mesiaci a dni v týždni — trojpísmenový názov (`JAN`, `MON`) namiesto čísla.

    Kanonickou definíciou tejto syntaxe je man stránka Linux crontab(5), ktorá dokumentuje presne tých istých päť polí, špeciálne znaky (`* , - /`) a osem `@` skratiek (`@reboot`, `@yearly`/`@annually`, `@monthly`, `@weekly`, `@daily`/`@midnight`, `@hourly`), ktoré väčšina implementácií cronu vrátane Vixie cron (verzia dodávaná s väčšinou distribúcií Linuxu) podporuje ako alias pre bežné rozvrhy.

    Tento nástroj implementuje presne tento štandardný 5-poľový formát — formát, ktorý by si zadal priamo do `crontab -e` na serveri s Linuxom alebo macOS, alebo do poľa `schedule:` Kubernetes CronJobu. Neimplementuje syntax Quartz cron, čo je odlišný formát so 6 alebo 7 poľami používaný Java Quartz Schedulerom a niektorými nástrojmi dodávateľov (pozri porovnávaciu sekciu nižšie, kedy potrebuješ práve ten).

    Prečo ho používať?

    • Práve si zdedil produkčný crontab s riadkom ako `17 3 * * 0` bez komentára, ktorý by ho vysvetľoval — vlož ho sem skôr, než sa čohokoľvek dotkneš, aby si videl, že to naozaj znamená "každú nedeľu o 3:17", nie preklep.
    • Píšeš GitHub Actions workflow s cron spúšťačom `schedule:` a stále si nie si istý, či `0 */6 * * *` naozaj znamená každých 6 hodín od polnoci — over si nasledujúcich 5 spustení pred odoslaním YAML súboru.
    • Nastavil si cron úlohu s obmedzením dňa v mesiaci aj dňa v týždni, napríklad `0 4 8 * MON`, a úloha sa spúšťa v dňoch, ktoré si nečakal — tento nástroj odhalí zjednocovacie (OR, nie AND) správanie, ktoré takmer každého napáli prvýkrát.
    • Staviaš Kubernetes CronJob a potrebuješ presný reťazec `schedule:` pre "každých 15 minút, len počas pracovných hodín, v pracovné dni" bez ručného počítania polí — použi konštruktor s rozbaľovacími menu namiesto ručného písania.
    • Nie si si istý, či konfigurácia plánovača používa štandardný cron alebo Quartz cron, pretože dokumentácia hovorí len "cron výraz" — over, či má 5 polí (tento nástroj) alebo 6-7 polí so znakmi `?`/`L`/`W`/`#` (Quartz), skôr než strávíš čas ladením nesúladu formátu.
    • 100% na strane klienta: logika tvojho rozvrhu nikdy neopustí prehliadač.

    Ako sa používa

    1. Na preklad výrazu: napíš alebo vlož 5-poľový cron reťazec (alebo @ skratku ako `@daily`) do vstupného poľa.
    2. Prečítaj si zrozumiteľný popis a nasledujúcich 5 vypočítaných spustení nižšie — oboje sa aktualizuje naživo počas písania.
    3. Ak chceš namiesto toho vytvoriť rozvrh: otvor sekciu Konštruktor, zvoľ režim (každý / každý N-tý / konkrétna hodnota) pre každé z piatich polí a klikni na "Generovať výraz".
    4. Vygenerovaný výraz vyplní vstupné pole vyššie a okamžite sa premietne do panelov popisu a nasledujúcich spustení.
    5. Použi legendu syntaxe naspodku ako rýchlu referenciu pre `*`, `,`, `-` a `/`.
    6. Skopíruj finálny výraz tlačidlom Kopírovať a vlož ho do svojho crontabu, CI konfigurácie alebo plánovača.

    Príklad

    Vstup

    */15 9-17 * * MON-FRI

    Výstup

    O 09:00, 09:15, 09:30, 09:45, 10:00 ... 17:45, v pondelok, utorok, stredu, štvrtok, piatok

    Tento výraz sa spúšťa každých 15 minút, ale len v rozsahu hodín 09:00–17:59, a len v pracovné dni — typický rozvrh "pracovných hodín" pre periodické dopytovanie.

    Štandardný cron vs Quartz cron

    "Cron syntax" nie je jeden univerzálny štandard — dva formáty, na ktoré narazíš najčastejšie, sa líšia počtom polí a významom niekoľkých špeciálnych znakov. Použi túto tabuľku na overenie, že používaš správny formát pre svoj cieľový plánovač.

    AspektŠtandardný cron (tento nástroj)Quartz cron
    Počet polí5 (minúta hodina deň-mesiaca mesiac deň-týždňa)6 alebo 7 (pridáva sekundy a voliteľne rok)
    PoužívajúLinux/macOS crontab, Kubernetes CronJob, GitHub ActionsJava Quartz Scheduler, niektoré enterprise plánovače
    Deň v mesiaci + deň v týždni obidva nastavenéZhoduje sa s KTORÝMKOĽVEK (zjednotenie/OR)Vyžaduje `?` v jednom z dvoch polí — nemôžeš nastaviť obe naraz na hodnotu
    Ďalšie špeciálne znakyŽiadne okrem `* , - /`Pridáva `?`, `L` (posledný), `W` (najbližší pracovný deň), `#` (n-tý deň v týždni mesiaca)
    Plánovanie na úrovni sekúndNepodporovanéPodporované (prvé pole)

    Bežné rozvrhové recepty

    Niekoľko výrazov pokrýva väčšinu reálnych potrieb plánovania — oplatí sa ich rozpoznať na prvý pohľad namiesto opätovného odvodzovania zakaždým.

    • `*/5 * * * *` — každých 5 minút, celý deň. Bežné pri kontrolách zdravia a ľahkých dopytovacích úlohách.
    • `0 */6 * * *` — každých 6 hodín, presne na hodinu (00:00, 06:00, 12:00, 18:00). Častá predvolená voľba pre periodickú synchronizáciu alebo upratovacie úlohy.
    • `0 2 * * *` — raz denne o 2:00. Klasický čas na nočné zálohy, keď je premávka najnižšia.
    • `0 9 * * 1-5` — o 9:00, len od pondelka do piatku. Štandard pre reporty alebo súhrny len počas pracovných hodín.
    • `0 0 1 * *` — polnoc 1. dňa každého mesiaca, ekvivalent skratky `@monthly`. Používa sa pri mesačných fakturačných behoch alebo resetoch využitia.
    • `*/15 9-17 * * MON-FRI` — každých 15 minút, ale len počas pracovných hodín v pracovné dni — kombinuje krok, rozsah a rozsah dní v týždni v jednom výraze.

    Súvisiace nástroje

    Pracuješ s konfiguráciami, rozvrhmi alebo časovými pečiatkami? Tieto nástroje sa dobre dopĺňajú s generátorom cronu.

    → Prevodník Časových Pečiatok · Prevodník Svetových Časov · Kalkulačka Dátumov

    Časté otázky

    Čo je cron výraz?

    Cron výraz je textový reťazec s 5 poľami (`minúta hodina deň-v-mesiaci mesiac deň-v-týždni`), ktorý určuje opakujúci sa rozvrh pre démona Unix `cron` a kompatibilné plánovače. Každé pole môže byť `*` (akákoľvek hodnota), číslo, zoznam oddelený čiarkami, rozsah (`a-b`) alebo krok (`*/n`); polia mesiaca a dňa v týždni tiež prijímajú trojpísmenové názvy ako `JAN` alebo `MON`. Úplná špecifikácia je zdokumentovaná v man stránke crontab(5).

    Čo sa stane, keď sú obmedzené deň v mesiaci aj deň v týždni?

    Toto je známa cron pasca: podľa POSIX cron sémantiky, keď sú OBIDVE polia — deň v mesiaci aj deň v týždni — obmedzené (nie `*`), úloha sa spustí, ak je splnená KTORÁKOĽVEK z podmienok — je to zjednotenie (OR), nie prienik (AND). Napríklad `0 4 8 * MON` sa spustí o 4:00 ráno na 8. deň každého mesiaca AJ v každý pondelok, nie len v pondelky, ktoré náhodou pripadnú na 8. deň. Tento nástroj implementuje presne toto zjednocovacie správanie pri výpočte nasledujúcich spustení.

    Štandardný cron vs Quartz cron — ktorý potrebujem?

    Tento nástroj generuje štandardnú 5-poľovú POSIX/Vixie cron syntax — formát používaný `crontab` na Linuxe/macOS, Kubernetes CronJobmi, `schedule:` v GitHub Actions a väčšinou úlohových runnerov odvodených od Unixu. Quartz cron, používaný Java Quartz Schedulerom a nástrojmi na ňom postavenými (niektoré enterprise plánovače, staršie konfigurácie Spring Batch), je odlišný formát so 6 alebo 7 poľami, ktorý pridáva úvodné pole sekúnd a mení význam niektorých špeciálnych znakov (`?` pre "žiadnu konkrétnu hodnotu" v poliach dňa, `L`/`W`/`#` pre "posledný deň", "najbližší pracovný deň" a "n-tý deň v týždni mesiaca"). Ak má tvoj plánovač 6 alebo 7 polí, alebo dokumentácia spomína `?`, `L`, `W` alebo `#`, potrebuješ nástroj špecifický pre Quartz — výrazy z tohto generátora sa tam nespracujú správne. Ak je to presne 5 polí (alebo skratka v štýle `@daily`), si na správnom mieste.

    Čo znamenajú skratky @yearly, @monthly, @weekly, @daily a @hourly?

    Sú to neštandardné, ale široko podporované skrátené reťazce, ktoré sa rozvinú na bežné 5-poľové výrazy: `@yearly`/`@annually` = `0 0 1 1 *` (raz ročne, 1. januára o polnoci), `@monthly` = `0 0 1 * *` (1. deň každého mesiaca o polnoci), `@weekly` = `0 0 * * 0` (každú nedeľu o polnoci), `@daily`/`@midnight` = `0 0 * * *` (každý deň o polnoci), `@hourly` = `0 * * * *` (na začiatku každej hodiny). Tento nástroj ich všetky spracuje a zaobchádza s nimi presne ako s ich rozvinutým 5-poľovým ekvivalentom.

    Môžem použiť názvy dní/mesiacov namiesto čísel?

    Áno. Pole mesiaca prijíma trojpísmenové názvy od `JAN` po `DEC` a pole dňa v týždni prijíma od `SUN` po `SAT` (bez rozlišovania veľkých/malých písmen), zameniteľne s číslami. Čísla dní v týždni idú od 0 po 6, kde 0 = nedeľa; niektoré implementácie prijímajú aj 7 pre nedeľu, čo tento nástroj normalizuje na 0. Rozsahy a zoznamy fungujú aj s názvami, napr. `MON-FRI` alebo `JAN,JUN,DEC`.

    Posiela sa môj cron výraz na server?

    Nie. Spracovanie, zrozumiteľný popis aj výpočet nasledujúcich spustení prebiehajú lokálne v JavaScripte v tvojom prehliadači. Nič, čo napíšeš alebo vygeneruješ, nikdy neopustí tvoje zariadenie.

    V akom časovom pásme sa počítajú nasledujúce spustenia?

    Tento nástroj počíta nasledujúce spustenia pomocou lokálneho časového pásma tvojho prehliadača, keďže samotný štandardný cron nemá zabudované pole časového pásma — skutočný démon alebo plánovač, ktorý spúšťa tvoju úlohu, používa časové pásmo nastavené na hostiteľskom systéme (alebo pre GitHub Actions a podobné cloudové plánovače, UTC). Ak sa časové pásmo tvojho servera líši od prehliadača, zobrazené časy si mysľou posuň, alebo si over konfiguráciu časového pásma plánovača samostatne.

    Ako naplánujem úlohu, aby bežala len v posledný deň mesiaca?

    Štandardný 5-poľový cron nemá priamu syntax pre "posledný deň mesiaca" — to je jedna z funkcií, ktoré Quartz cron pridáva pomocou znaku `L`. V štandardnom crone je bežným riešením naplánovať úlohu na 28.-31. deň každý deň (`0 0 28-31 * *`) a nechať skript samotný skontrolovať, či zajtrajší dátum prechádza do nového mesiaca, skôr než skutočne spustí svoju logiku.

    Môžem naplánovať niečo, aby bežalo v nezvyčajnom intervale, napríklad každých 10 minút?

    Áno, pomocou syntaxe kroku: `*/10 * * * *` beží každých 10 minút od :00 (teda o :00, :10, :20, :30, :40, :50). Pamätaj, že kroky vždy začínajú počítať od minimálnej hodnoty poľa, takže `*/10` v poli minút nikdy nepadne na :05 alebo :15 — ak potrebuješ takýto posun, použi namiesto toho explicitný zoznam oddelený čiarkami, napr. `5,15,25,35,45,55`.

    Prečo sa moja cron úloha zdá spustiť dvakrát naraz, alebo vôbec, okolo zmeny letného/zimného času?

    Štandardný cron plánuje podľa nástenných hodín hostiteľského systému a prechody DST vytvárajú buď preskočenú hodinu (posun dopredu), alebo opakovanú hodinu (posun dozadu). Úloha naplánovaná počas preskočenej alebo opakovanej hodiny sa môže v ten deň spustiť nulakrát alebo dvakrát, v závislosti od konkrétneho spracovania tvojho cron démona. Spúšťanie kritických infraštruktúrnych úloh na serveroch nastavených na UTC (ktoré nemá DST) sa tomuto úplne vyhne.

    Súvisiace nástroje