Zostaviť cron výraz
- Dashboard
- Dokumentácia
- API
Prečo vizuálny cron builder?
Cron expression drží na piatich poliach a napriek tomu zostáva jedným z najgenerujúcejších
bugov v produkcii. Koľkokrát napísal vývojár 0 0 * * 1 mysliac si "každý
pondelok", bez pripomenutia si, že 1 môže znamenať nedeľu podľa implementácií? Koľkokrát
sme zamieňali */15 a 15? Cron builder odpovedá na túto
potrebu: vizuálne skladať crontab expression, z bežných preset hodnôt alebo
individuálnych polí, a získať finálny výraz pripravený na vloženie do Linux crontab, Kubernetes
CronJob alebo GitHub Actions schedulu.
Nástroj je opakom nášho cron dekódera: tam, kde converter berie výraz a rozbaľuje ďalšie spustenia, builder berie ľudské voľby a produkuje zodpovedajúci cron výraz.
Ako to funguje
Grafické rozhranie navrhuje dva komplementárne módy zloženia:
- Preset mód: selektor frekvencie (every minute, every hour, every day, every week, every month, every year, custom), ktorý okamžite generuje validný cron expression.
- Field mód: päť editovateľných polí (minúta, hodina, deň mesiaca, mesiac, deň
týždňa), kde voľne zadávate
*, celé číslo, rozsah1-5, zoznam1,15,30alebo krok*/15.
Builder aktualizuje výraz v reálnom čase a zobrazuje stručné ľudské čítanie ("každý deň o 3h", "každých 15 minút"), ktoré slúži ako poistka: ak veta nesedí s vaším úmyslom, výraz je pravdepodobne nesprávny.
Päť cron polí, jasne
Štandardný cron expression obsahuje päť polí oddelených medzerami:
minuta hodina den-mesiaca mesiac den-tyzdna
* * * * *
- minúta (0 až 59);
- hodina (0 až 23);
- deň mesiaca (1 až 31);
- mesiac (1 až 12 alebo skratky Jan, Feb, atď.);
- deň týždňa (0 až 7, 0 a 7 reprezentujú nedeľu vo väčšine implementácií).
Každé pole akceptuje viacero foriem: * (všetky hodnoty), presné celé číslo
(5), zoznam (1,3,5), rozsah (9-17), krok (*/15
každých 15 hodnôt), alebo kombinácia (0-30/5).
Typické prípady použitia
- Vývojár, ktorý sa učí cron: vizualizovať, ako každé pole interaguje, bez rizika nesprávneho výrazu v produkcii.
- Ponáhľajúci sa sysadmin: generovať za niekoľko sekúnd schedule pre Linux cron, Kubernetes CronJob alebo Ansible job bez opätovného čítania man page.
- Vývojár bez POSIX skúseností: produkovať validný crontab expression pre Symfony Scheduler, Laravel Scheduler alebo node-cron bez znalosti historickej syntaxe.
- DevOps v review: rýchlo prototypovať výraz na návrh v pull requeste, potom ho validovať cron dekóderom.
- Legacy migrácia: preformulovať historický cron výraz prechodom cez builder pre uistenie sa o sémantike pred jeho posunutím inam.
Bežné presety
Výber presetu prepisuje individuálne polia a produkuje zodpovedajúci výraz:
- Každú minútu:
* * * * *. Vyhnúť sa v produkcii okrem konkrétnej potreby. - Každú hodinu:
0 * * * *. Pri každom začiatku hodiny. - Každý deň:
0 0 * * *. O polnoci. - Každý týždeň:
0 0 * * 0. Každú nedeľu o polnoci. - Každý mesiac:
0 0 1 * *. 1. v mesiaci o polnoci. - Každý rok:
0 0 1 1 *. 1. januára o polnoci.
Bežné patterns na znalosť
| Výraz | Ľudské čítanie |
|---|---|
0 0 * * * |
Každý deň o polnoci |
*/15 * * * * |
Každých 15 minút |
0 9 * * 1-5 |
Každý pracovný deň o 9h |
0 0 1 * * |
1. v mesiaci o polnoci |
0 0 * * 0 |
Každú nedeľu o polnoci |
*/5 9-17 * * 1-5 |
Každých 5 minút v pracovných hodinách |
0 3 * * * |
Každý deň o 3h ráno |
30 2 1,15 * * |
1. a 15. v mesiaci o 2h30 |
Skomponovať vlastný výraz
Pre špecifickejšie prípady asistent exponuje päť polí vo voľnom vstupe. Niekoľko užitočných príkladov:
- Každý deň o 3h ráno: minute=
0, hour=3, ostatné polia*. - Každých 15 minút: minute=
*/15, ostatné polia*. - Pondelok až piatok o 9h: minute=
0, hour=9, day-of-week=1-5. - 1. a 15. v mesiaci na poludnie: minute=
0, hour=12, day-of-month=1,15. - Každých 5 minút medzi 9h a 17h: minute=
*/5, hour=9-17.
Ako používať cron builder
- Vyberte preset (every minute, every hour, every day, every week, every month, every year), ktorý zodpovedá základu vašej potreby.
- Spresnite v prípade potreby priamou úpravou piatich polí (minúta, hodina, deň mesiaca, mesiac, deň týždňa).
- Prečítajte ľudskú vetu vygenerovanú nástrojom pre potvrdenie zámeru.
- Skopírujte produkovaný cron expression cez tlačidlo kopírovania.
- Validujte schedule naším cron dekóderom, ktorý počíta ďalšie reálne dátumy spustenia.
- Vložte výraz do vášho Linux crontab, Kubernetes CronJob, Symfony Scheduler alebo GitHub Actions workflow.
Klasické pasti
- Kombinovaný deň mesiaca a deň týždňa: ak oba nie sú
*, správanie sa líši podľa implementácií. Linux/Vixie cron aplikuje OR; moderné knižnice majú niekedy odlišné správanie. Vyhnúť sa. - Deň 1 = pondelok alebo nedeľa?: podľa krajiny a konvencie. Väčšina Unix cron považuje nedeľa=0 a sobota=6. Skontrolujte váš planner.
- Časové pásmo: Unix cron používa defaultne pásmo servera. Aplikačné plannery (Symfony Scheduler, Quartz) často umožňujú fixovať dedikované pásmo.
- Chýbajúca minúta:
* * * * *spúšťa job každú minútu, čo zriedka chceme. Pamätajte fixovať presný trigger (0) pre hodinové úlohy.
Ľudské čítanie a výstup
Okrem cron expression nástroj navrhuje stručné ľudské čítanie ("každý deň o polnoci", "každých 5 minút"). Je to poistka: ak veta nezodpovedá vášmu zámeru, výraz je pravdepodobne nesprávny. Pre komplexný prípad použite potom náš cron dekóder na výpočet ďalších reálnych dátumov spustenia.
Často kladené otázky
Môžem manuálne upraviť výraz po použití rozhrania?
Áno. Builder nie je exkluzívny mód: päť polí zostáva editovateľných kedykoľvek. Môžete začať s presetom, potom upraviť pole ručne pre získanie crontab expression na mieru. Ľudské čítanie je okamžite prepočítané.
Podporuje nástroj Quartz formát so 6 poľami (so sekundami)?
Nie: 5-poľový formát je Unix štandard a spoločná báza pre väčšinu plannerov
(Linux crontab, Kubernetes CronJob, GitHub Actions, GitLab CI, Symfony Scheduler, Laravel Scheduler).
Quartz (Java) akceptuje dodatočné pole pre sekundy a špecifické symboly
(?, L, W, #), ale táto potreba zostáva zriedkavá.
Ako je spravované časové pásmo?
Builder produkuje neutrálny cron výraz: je to engine spúšťajúci job, ktorý aplikuje svoje
časové pásmo. Na Linux crontab je to TZ servera. Na GitHub Actions je to UTC. Na
Kubernetes 1.27+ môžete fixovať spec.timeZone v manifeste. Symfony Scheduler a
Quartz exponujú dedikované pásmo per úlohu.
Ako validovať môj výraz bez jeho spustenia v produkcii?
Použite náš cron dekóder. Počíta N ďalších spustení od aktuálneho okamihu, bez spustenia akéhokoľvek jobu. Je to najlepší spôsob potvrdenia, že cron expression sa skutočne spúšťa v plánovanej hodine pred jej nasadením.
Aký je vzťah so Symfony Scheduler?
Symfony Scheduler akceptuje 5-poľové cron výrazy cez Schedule::cron('0 3 * * *', ...)
. Výraz produkovaný builderom môže byť teda vložený tak, ako je. Rovnako pre Laravel
Scheduler (->cron('...')), node-cron, Hangfire a Airflow.
Treba prefixovať príkaz v systémovom crontab?
Áno, v /etc/crontab treba užívateľa (0 3 * * * www-data /usr/bin/php
...), zatiaľ čo crontab -e per užívateľa ho vynecháva. Samotný výraz zostáva
identický.
Ukážka požiadavky
curl -X POST https://cdrn.fr/api/v1/tools/cron-builder/execute \
-H "Content-Type: application/json" \
-d '{"preset":"none","minute":"*","hour":"*","day_of_month":"*","month":"*","day_of_week":"*"}'
Vstupná schéma
| Pole | Typ | Povinné | Predvolené |
|---|---|---|---|
preset |
choice (none, every_minute, hourly, daily, weekly, monthly, yearly) | – | none |
minute |
string | – | * |
hour |
string | – | * |
day_of_month |
string | – | * |
month |
string | – | * |
day_of_week |
string | – | * |
Koncové body
GET https://cdrn.fr/api/v1/tools- vypíše všetky dostupné nástrojeGET https://cdrn.fr/api/v1/tools/cron-builder- získa schému tohto nástrojaPOST https://cdrn.fr/api/v1/tools/cron-builder/execute- spustí tento nástroj s JSON payloadom