Vypočítať ďalšie spustenia cron výrazu
- Dashboard
- Dokumentácia
- API
Čo je cron expression?
Cron expression je krátky reťazec popisujúci časovú recurrenciu. Unix
zdedený formát drží na piatich poliach oddelených medzerami: minúta, hodina,
deň mesiaca, mesiac a deň týždňa. Táto syntax vznikla s
cron démonom Briana Kernighana v 70. rokoch, potom zovšeobecnená Vixie cronom
(1987) prevzatým všetkými modernými Linux a macOS distribúciami. Dnes sa rovnaká syntax
nachádza vo väčšine cloudových plannerov (AWS EventBridge, GCP Cloud Scheduler, Azure Logic
Apps) a CI/CD (GitHub Actions, GitLab CI, Jenkins).
┌──── minuta (0-59)
│ ┌── hodina (0-23)
│ │ ┌── den mesiaca (1-31)
│ │ │ ┌── mesiac (1-12 alebo JAN-DEC)
│ │ │ │ ┌── den tyzdna (0-7 alebo SUN-SAT, 0 a 7 = nedela)
│ │ │ │ │
* * * * *
Správne formovaný cron expression definuje presný cron schedule: každé pole môže byť fixná hodnota, rozsah, zoznam, krok alebo hviezdička matchujúca všetko. Kompaktnosť crontab expression je jeho silou, ale je to tiež to, čo robí cron decoder nepostrádateľným pre vizuálnu validáciu zámeru. Je to celý objekt tohto cron converteru: produkovať čitateľné cron vysvetlenie plus zoznam ďalších spustení.
Anatómia cron expression
Päť polí zdieľa spoločnú gramatiku. Tu sú hraničné hodnoty akceptované každým stĺpcom štandardného crontab expression:
- Minúta:
0-59. - Hodina:
0-23, 24h formát. - Deň mesiaca:
1-31. - Mesiac:
1-12alebo textové skratkyJAN,FEB,MAR,APR,MAY,JUN,JUL,AUG,SEP,OCT,NOV,DEC. - Deň týždňa:
0-7, kde0a7reprezentujú nedeľu, alebo skratkySUN,MON,TUE,WED,THU,FRI,SAT.
Špeciálne znaky zdieľané piatimi poliami:
*: any value, matchuje všetky povolené hodnoty poľa.,: diskrétny zoznam, napríklad1,15,30v poli minúta.-: inkluzívny rozsah, napríklad9-17pre pracovné hodiny./: krok (step), napríklad*/15= každých 15 jednotiek, alebo0-30/5= každých 5 minút medzi 0 a 30.
Quartz rozšírenia (Java, AWS EventBridge, Spring): gramatika rastie na 6 alebo 7
polí so stĺpcom sekundy na začiatku (0-59) a niekedy stĺpcom
rok na konci (1970-2099). Quartz tiež zavádza ? (no specific
value, pre oddelenie deň-mesiaca a deň-týždňa), L (last: posledný deň mesiaca,
alebo posledný piatok s 5L), W (najbližší pracovný deň) a #
(N-tý deň týždňa mesiaca, napríklad 2#3 pre 3. pondelok). Quartz výraz
zvyčajne nie je kompatibilný s UNIX crontab a naopak: je to hlavný
zdroj chýb pri kopírovaní cron expression z jednej platformy na druhú.
# UNIX / Vixie cron (5 poli)
0 9 * * 1-5
# Quartz (6 poli so sekundami)
0 0 9 ? * MON-FRI
# Quartz (7 poli s rokom)
0 0 9 ? * MON-FRI 2026
Prečo dekódovať cron expression?
Čítať 0 0 * * * je rýchle. Čítať */7 2-5 1,15 * 1-5 je výrazne menej. Keď
výraz vychádza z triviálneho, riziko chybnej interpretácie rastie a cron decode
sa stáva samostatnou review fázou.
- Production debug: pochopiť, prečo sa úloha spustila o 03h17 a nie o 03h00, alebo identifikovať prekrytie medzi dvomi jobmi.
- Code review: validovať, že planner push v pull requeste robí to, čo autor tvrdí, bez nutnosti memorovať sémantiku každého symbolu.
- Audit plannerov: prejsť cez cron joby Linuxu v
/etc/crontaba/etc/cron.d/, Jenkins triggery,spec.scheduleKubernetes CronJob, pravidlá AWS EventBridge a joby GCP Cloud Scheduler. - Legacy migrácia: prevziať historický
/etc/crontabbez dokumentácie a rekonštituovať mapu úloh pred zmenou infraštruktúry. - Onboarding: umožniť novému vývojárovi prečítať crontab bez nutnosti naučiť sa všetky špeciálne znaky zo dňa na deň.
Ako používať cron decoder
Postup pre dekódovanie crontab expression nástrojom:
- Vložte váš cron expression do vstupného poľa (5 polí oddelených medzerami).
- Indikujte počet nasledujúcich spustení na výpočet.
- Kliknite na convert pre spustenie cron decode: nástroj vráti ľudskú vetu vysvetľujúcu spustenie, plus dátumovaný zoznam ďalších spustení.
- Vizuálne overte, že dátumy zodpovedajú vášmu zámeru (hodina, deň, frekvencia).
- Skopírujte výstup cez tlačidlo kopírovania pre jeho vloženie do ticketu, PR alebo technickej dokumentácie.
Nástroj sa neuspokojí so syntaktickým parsovaním: poskytuje cron vysvetlenie v prirodzenom jazyku, čo z neho robí súčasne cron decoder a validátor plánovania.
Klasické príklady cron expression
Nižšie uvedené patterns pokrývajú podstatu cron schedules stretávaných v produkcii. Sú všetky validné na Linux crontab, Kubernetes CronJob, GitHub Actions a väčšine aplikačných plannerov.
| Výraz | Ľudské čítanie |
|---|---|
* * * * * |
Každú minútu |
0 * * * * |
Každú hodinu presne |
0 0 * * * |
Každý deň o polnoci |
0 0 * * 0 |
Každú nedeľu o polnoci |
*/15 * * * * |
Každých 15 minút |
0 9 * * 1-5 |
9h00 od pondelka do piatku |
0 0 1 * * |
1. v každom mesiaci o polnoci |
0 0,12 * * * |
O polnoci a na poludnie každý deň |
*/5 9-17 * * 1-5 |
Každých 5 minút v pracovných hodinách |
30 2 1,15 * * |
1. a 15. v mesiaci o 2h30 |
Pre spustenie cron úlohy na Linux serveri editujeme užívateľskú crontab zo shellu:
# editovat crontab aktualneho uzivatela
$ crontab -e
# vypisat existujuce ulohy
$ crontab -l
# priklad pridaneho riadku: denna zaloha o 3h
0 3 * * * /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1
Príklad výstupu cron converteru pre */5 * * * *:
2026-05-05 00:00:00
2026-05-05 00:05:00
2026-05-05 00:10:00
2026-05-05 00:15:00
2026-05-05 00:20:00
...
Často kladené otázky o cron dekóderi
Aký rozdiel medzi UNIX cron a Quartz?
UNIX/Vixie cron používa 5 polí (minúta po deň-týždňa), bez presnosti na sekundu, a nemá
natívnu predstavu o "poslednom dni mesiaca". Quartz (Java, Spring, AWS EventBridge) pridáva stĺpec
sekundy na začiatok, niekedy stĺpec rok na koniec, a niekoľko symbolov
(?, L, W, #) chýbajúcich v Linux crontab. Quartz
cron expression so 6 poľami teda nie je priamo prenosný do
/etc/crontab, a naopak. Náš cron decoder cieli 5-poľový formát,
ktorý pokrýva väčšinu plannerov.
Ako spustiť cron úlohu každých 5 minút?
Krokom / na poli minúta:
*/5 * * * * /usr/local/bin/check-health.sh
Tento crontab expression spúšťa skript v minútach 0, 5, 10, 15... každej
hodiny, každý deň. Pre obmedzenie na pracovné hodiny pondelok až piatok pridajte podmienky
na polia hodina a deň-týždňa: */5 9-17 * * 1-5.
Čo znamená hviezdička (*) v cron expression?
Hviezdička znamená any value: matchuje všetky povolené hodnoty poľa. V
0 0 * * * tri hviezdy znamenajú "akýkoľvek deň mesiaca, akýkoľvek
mesiac, akýkoľvek deň týždňa". Kombinované s prvými dvomi poliami fixovanými na 0,
získame "každý deň o polnoci". Hviezda sa tiež môže kombinovať s krokom: */15 v
minúte = každých 15 minút.
Má crontab časové pásmo?
Defaultne pásmo servera. Na Linux crontab je to systémové TZ (často UTC na VPS a
kontajneroch). GitHub Actions vynucuje UTC. Kubernetes CronJob používa pásmo kontroléra,
konfigurovateľné cez spec.timeZone od 1.27. AWS EventBridge vyhodnocuje výrazy v
UTC. Aplikačné plannery (Symfony Scheduler, Quartz, Airflow) často umožňujú fixovať
dedikované pásmo per úlohu. V prípade pochybností overte date na cieľovom serveri a
porovnajte s výstupom cron converteru.
Cron job vs at príkaz: ktorý zvoliť?
cron slúži na spustenie opakujúcej sa úlohy podľa plánu. at slúži
na spustenie príkazu jednorazovo v danom okamihu. Pre dennú zálohu,
log rotáciu alebo pravidelné API volanie použite cron. Pre odloženie jednorazovej operácie
("znovu spusti tento deploy o 22h dnes večer") použite at:
$ echo "/usr/local/bin/deploy.sh" | at 22:00
Ako testovať cron expression bez jeho spustenia?
Je to presne úloha tohto cron converteru: počíta N ďalších
spustení od aktuálneho okamihu, bez spustenia akéhokoľvek jobu. Okamžite vidíte, či váš
crontab expression sa spúšťa o 03h00, ako bolo plánované, alebo o 03h17 omylom. Pre ďalšie
kroky pred inštaláciou úlohy môžete tiež testovať skript samotný (bash -x script.sh)
a overiť syntax crontab súboru cez crontab -T fichier na distribúciách,
ktoré to podporujú.
Čo sa stane, ak sú deň-mesiaca a deň-týždňa oba fixované?
Na Vixie cron (Linux) je pravidlo logické OR: job sa spustí, ak jedno alebo
druhé z dvoch polí matchuje. Je to kontraintuitívne a zdroj bugov. Quartz používa
AND, odkiaľ zavedenie symbolu ? pre explicitné signalizovanie "žiadna
podmienka". Vo všeobecnosti fixujte iba jedno z dvoch polí.
Ukážka požiadavky
curl -X POST https://cdrn.fr/api/v1/tools/cron-converter/execute \
-H "Content-Type: application/json" \
-d '{"cron":"...","number_next_date":1}'
Vstupná schéma
| Pole | Typ | Povinné | Predvolené |
|---|---|---|---|
cron |
string | ✓ | – |
number_next_date |
integer | ✓ | – |
Koncové body
GET https://cdrn.fr/api/v1/tools- vypíše všetky dostupné nástrojeGET https://cdrn.fr/api/v1/tools/cron-converter- získa schému tohto nástrojaPOST https://cdrn.fr/api/v1/tools/cron-converter/execute- spustí tento nástroj s JSON payloadom