Sestavit cron výraz
- Dashboard
- Dokumentace
- API
Proč vizuální cron builder?
Cron expression má pět polí a přesto zůstává jednou z nejvíce generujících
bugy v produkci. Kolikrát developer napsal 0 0 * * 1 myslíc si "každé
pondělí", aniž by si vzpomněl, že 1 může znamenat neděli podle implementace? Kolikrát
zaměnili */15 a 15? Cron builder odpovídá této
potřebě: vizuálně složit crontab expression, z běžných presetů nebo
individuálních polí, a získat finální výraz připravený k vložení do Linux crontab, Kubernetes
CronJob nebo GitHub Actions schedule.
Nástroj je opakem našeho cron decoderu: zatímco converter bere výraz a rozvine další provedení, builder bere lidská rozhodnutí a produkuje odpovídající cron expression.
Jak to funguje
Grafické rozhraní nabízí dva komplementární módy kompozice:
- Preset mód: selektor frekvence (every minute, every hour, every day, every week, every month, every year, custom), který okamžitě generuje validní cron expression.
- Mód polí: pět editovatelných polí (minuta, hodina, den měsíce, měsíc, den
týdne), kde volně zadáváte
*, celé číslo, rozsah1-5, seznam1,15,30nebo krok*/15.
Builder aktualizuje výraz v reálném čase a zobrazuje stručné lidské čtení ("každý den ve 3h", "každých 15 minut"), které slouží jako pojistka: pokud věta neodpovídá vašemu úmyslu, výraz je pravděpodobně chybný.
Pět cron polí, jasně
Standardní cron expression obsahuje pět polí oddělených mezerami:
minuta hodina den-mesice mesic den-tydne
* * * * *
- minuta (0 až 59);
- hodina (0 až 23);
- den měsíce (1 až 31);
- měsíc (1 až 12 nebo zkratky Jan, Feb, atd.);
- den týdne (0 až 7, 0 a 7 reprezentují neděli ve většině implementací).
Každé pole přijímá několik forem: * (všechny hodnoty), přesné celé číslo
(5), seznam (1,3,5), rozsah (9-17), krok (*/15
každých 15 hodnot), nebo kombinaci (0-30/5).
Typické případy použití
- Developer učící se cron: vizualizovat, jak každé pole interaguje, bez rizika chybného výrazu v produkci.
- Spěchající sysadmin: vygenerovat za pár sekund schedule pro Linux cron, Kubernetes CronJob nebo Ansible job bez opětovného čtení man page.
- Developer bez POSIX zkušenosti: vyprodukovat validní crontab expression pro Symfony Scheduler, Laravel Scheduler nebo node-cron bez znalosti historické syntaxe.
- DevOps v review: rychle prototypovat výraz k navržení v pull requestu, pak ho validovat s cron decoderem.
- Migrace legacy: reformulovat historický cron expression průchodem přes builder pro ujištění sémantiky před pushováním jinde.
Běžné presety
Výběr presetu přepíše individuální pole a produkuje odpovídající výraz:
- Každou minutu:
* * * * *. Vyhnout se v produkci, pokud není zvláštní potřeba. - Každou hodinu:
0 * * * *. Na začátku každé hodiny. - Každý den:
0 0 * * *. O půlnoci. - Každý týden:
0 0 * * 0. Každou neděli o půlnoci. - Každý měsíc:
0 0 1 * *. 1. v měsíci o půlnoci. - Každý rok:
0 0 1 1 *. 1. ledna o půlnoci.
Běžné vzorce, které je třeba znát
| Výraz | Lidské čtení |
|---|---|
0 0 * * * |
Každý den o půlnoci |
*/15 * * * * |
Každých 15 minut |
0 9 * * 1-5 |
Každý pracovní den v 9h |
0 0 1 * * |
1. v měsíci o půlnoci |
0 0 * * 0 |
Každou neděli o půlnoci |
*/5 9-17 * * 1-5 |
Každých 5 minut v pracovní době |
0 3 * * * |
Každý den ve 3h ráno |
30 2 1,15 * * |
1. a 15. v měsíci ve 2:30 |
Sestavit vlastní výraz
Pro specifičtější případy asistent vystavuje pět polí ke svobodnému zadání. Několik užitečných příkladů:
- Každý den ve 3h ráno: minuta=
0, hodina=3, ostatní pole*. - Každých 15 minut: minuta=
*/15, ostatní pole*. - Od pondělí do pátku v 9h: minuta=
0, hodina=9, den-týdne=1-5. - Každého 1. a 15. v měsíci v poledne: minuta=
0, hodina=12, den-měsíce=1,15. - Každých 5 minut mezi 9h a 17h: minuta=
*/5, hodina=9-17.
Jak používat cron builder
- Vyberte preset (every minute, every hour, every day, every week, every month, every year), který odpovídá základu vaší potřeby.
- Doupravte v případě potřeby přímou editací pěti polí (minuta, hodina, den měsíce, měsíc, den týdne).
- Přečtěte si lidskou frázi generovanou nástrojem pro potvrzení úmyslu.
- Zkopírujte vyprodukovaný cron expression přes tlačítko kopírování.
- Validujte schedule s naším cron decoderem, který počítá další skutečné datumy provedení.
- Vložte výraz do svého Linux crontabu, Kubernetes CronJobu, Symfony Scheduleru nebo GitHub Actions workflow.
Klasické pasti
- Kombinace dne měsíce a dne týdne: pokud oba nejsou
*, chování se liší podle implementací. Linux/Vixie cron aplikuje NEBO; moderní knihovny mají někdy jiné chování. Vyhnout se. - Den 1 = pondělí nebo neděle?: podle země a konvence. Většina Unix cronů považuje neděli=0 a sobotu=6. Ověřte svůj plánovač.
- Časové pásmo: Unix cron používá výchozí časové pásmo serveru. Aplikační plánovače (Symfony Scheduler, Quartz) často umožňují stanovit dedikované časové pásmo.
- Chybějící minuta:
* * * * *spouští job každou minutu, což zřídka chceme. Pamatujte stanovit přesnou spoušť (0) pro hodinové úlohy.
Lidské čtení a výstup
Kromě cron expression nástroj nabízí stručné lidské čtení ("každý den o půlnoci", "každých 5 minut"). Je to pojistka: pokud věta neodpovídá vašemu úmyslu, výraz je pravděpodobně chybný. Pro komplexní případ pak použijte cron decoder pro výpočet dalších skutečných datumů provedení.
Často kladené otázky
Mohu výraz manuálně upravit po použití rozhraní?
Ano. Builder není exkluzivní mód: pět polí zůstává editovatelných kdykoli. Můžete vyjít z presetu, pak upravit pole ručně pro získání custom crontab expression. Lidské čtení je okamžitě přepočítáno.
Podporuje nástroj Quartz formát s 6 poli (se sekundami)?
Ne: 5polový formát je Unix standard a společná báze většiny plánovačů
(Linux crontab, Kubernetes CronJob, GitHub Actions, GitLab CI, Symfony Scheduler, Laravel Scheduler).
Quartz (Java) přijímá dodatečné pole pro sekundy a specifické symboly
(?, L, W, #), ale tato potřeba zůstává vzácná.
Jak je spravováno časové pásmo?
Builder produkuje neutrální cron expression: je to motor, který spouští job, jenž aplikuje své
časové pásmo. Na Linux crontab to je TZ serveru. Na GitHub Actions to je UTC. Na
Kubernetes 1.27+ můžete stanovit spec.timeZone v manifestu. Symfony Scheduler a
Quartz vystavují dedikované časové pásmo pro každou úlohu.
Jak validovat můj výraz bez spuštění v produkci?
Použijte náš cron decoder. Počítá N dalších provedení od aktuálního okamžiku, bez spuštění jakéhokoli jobu. Je to nejlepší způsob, jak potvrdit, že cron expression tahne ve vypočítané hodině před nasazením.
Jaký je vztah se Symfony Schedulerem?
Symfony Scheduler přijímá 5polové cron expressions přes Schedule::cron('0 3 * * *', ...)
. Výraz vyprodukovaný builderem lze tedy vložit jak je. Stejně pro Laravel
Scheduler (->cron('...')), node-cron, Hangfire a Airflow.
Mám prefixovat příkaz v systémovém crontabu?
Ano, v /etc/crontab je třeba uživatel (0 3 * * * www-data /usr/bin/php
...), zatímco crontab -e per uživatel ho vynechává. Samotný výraz zůstává
identický.
Ukázka požadavku
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é | Výchozí |
|---|---|---|---|
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šechny dostupné nástrojeGET https://cdrn.fr/api/v1/tools/cron-builder- získá schéma tohoto nástrojePOST https://cdrn.fr/api/v1/tools/cron-builder/execute- spustí tento nástroj s JSON payloadem