Vypočítat další spuštění cron výrazu
- Dashboard
- Dokumentace
- API
Co je cron expression?
Cron expression je krátký řetězec, který popisuje opakování v čase.
Formát zděděný z Unixu má pět polí oddělených mezerami: minuta, hodina,
den měsíce, měsíc a den týdne. Tato syntaxe se zrodila s démonem
cron Briana Kernighana v sedmdesátých letech, pak generalizovaná Vixie cronem
(1987) převzatým všemi moderními Linux a macOS distribucemi. Dnes se stejná syntaxe
nachází ve většině cloud plánovačů (AWS EventBridge, GCP Cloud Scheduler, Azure Logic
Apps) a CI/CD (GitHub Actions, GitLab CI, Jenkins).
┌──── minuta (0-59)
│ ┌── hodina (0-23)
│ │ ┌── den měsíce (1-31)
│ │ │ ┌── měsíc (1-12 nebo JAN-DEC)
│ │ │ │ ┌── den týdne (0-7 nebo SUN-SAT, 0 a 7 = neděle)
│ │ │ │ │
* * * * *
Dobře formovaný cron expression tedy definuje přesný cron schedule: každé pole může být pevná hodnota, rozsah, seznam, krok nebo hvězdička, která matchuje vše. Kompaktnost crontab expression je jeho silou, ale je to také to, co dělá cron decoder nepostradatelným pro vizuální validaci úmyslu. To je celý objekt tohoto cron converteru: produkovat čitelné cron vysvětlení, plus seznam dalších provedení.
Anatomie cron expression
Pět polí sdílí společnou gramatiku. Zde jsou limity přijímané každým sloupcem standardního expression crontab:
- Minuta:
0-59. - Hodina:
0-23, 24h formát. - Den měsíce:
1-31. - Měsíc:
1-12nebo textové zkratkyJAN,FEB,MAR,APR,MAY,JUN,JUL,AUG,SEP,OCT,NOV,DEC. - Den týdne:
0-7kde0a7reprezentují neděli, nebo zkratkySUN,MON,TUE,WED,THU,FRI,SAT.
Speciální znaky sdílené pěti poli:
*: any value, matchuje všechny povolené hodnoty pole.,: diskrétní seznam, například1,15,30v poli minuty.-: inkluzivní rozsah, například9-17pro pracovní hodiny./: krok (step), například*/15= každých 15 jednotek, nebo0-30/5= každých 5 minut mezi 0 a 30.
Quartz extensions (Java, AWS EventBridge, Spring): gramatika stoupá na 6 nebo 7
polí se sloupcem sekundy na začátku (0-59) a někdy sloupcem
rok na konci (1970-2099). Quartz také zavádí ? (no specific
value, pro oddělení dne-měsíce a dne-týdne), L (last: poslední den měsíce,
nebo poslední pátek s 5L), W (nejbližší pracovní den) a #
(N-tý den týdne v měsíci, například 2#3 pro 3. pondělí). Quartz expression
obecně není kompatibilní s UNIX crontabem a vice versa: je to hlavní
zdroj chyb při kopírování cron expression z jedné platformy na druhou.
# UNIX / Vixie cron (5 polí)
0 9 * * 1-5
# Quartz (6 polí se sekundami)
0 0 9 ? * MON-FRI
# Quartz (7 polí s rokem)
0 0 9 ? * MON-FRI 2026
Proč dekódovat cron expression?
Číst 0 0 * * * je rychlé. Číst */7 2-5 1,15 * 1-5 je výrazně méně. Když
výraz vystoupí z triviálního, riziko interpretační chyby roste a cron decode
se stává samostatným krokem review.
- Produkční debug: pochopit, proč se úloha spustila ve 03:17 a ne ve 03:00, nebo identifikovat překrytí mezi dvěma joby.
- Code review: validovat, že plánovač pushovaný v pull requestu skutečně dělá to, co autor tvrdí, bez nutnosti memorizovat sémantiku každého symbolu.
- Audit plánovačů: projít cron jobs Linuxu v
/etc/crontaba/etc/cron.d/, Jenkins triggery,spec.scheduleKubernetes CronJob, pravidla AWS EventBridge a joby GCP Cloud Scheduler. - Migrace legacy: převzít historický
/etc/crontabbez dokumentace a rekonstruovat kartografii úloh před změnou infrastruktury. - Onboarding: umožnit novému developerovi přečíst crontab bez nutnosti naučit se všechny speciální znaky najednou.
Jak používat cron decoder
Postup pro dekódování expression crontab s nástrojem:
- Vložte svůj cron expression do vstupního pole (5 polí oddělených mezerami).
- Uveďte počet dalších provedení k výpočtu.
- Klikněte na convert pro spuštění cron decode: nástroj vrátí lidskou frázi vysvětlující spouštění, plus datovaný seznam dalších provedení.
- Vizuálně ověřte, že data odpovídají vašemu úmyslu (hodina, den, frekvence).
- Zkopírujte výstup přes tlačítko kopírování pro vložení do tiketu, PR nebo technické dokumentace.
Nástroj se nespokojuje se syntaktickým parsingem: poskytuje cron vysvětlení v přirozeném jazyce, což z něj činí jak cron decoder, tak validátor plánování.
Klasické příklady cron expression
Níže uvedené vzorce pokrývají to podstatné z cron schedules nalezených v produkci. Všechny jsou validní na Linux crontab, Kubernetes CronJob, GitHub Actions a většině aplikačních plánovačů.
| Výraz | Lidské čtení |
|---|---|
* * * * * |
Každou minutu |
0 * * * * |
Každou hodinu přesně |
0 0 * * * |
Každý den o půlnoci |
0 0 * * 0 |
Každou neděli o půlnoci |
*/15 * * * * |
Každých 15 minut |
0 9 * * 1-5 |
9:00 od pondělí do pátku |
0 0 1 * * |
1. v každém měsíci o půlnoci |
0 0,12 * * * |
O půlnoci a poledni každý den |
*/5 9-17 * * 1-5 |
Každých 5 minut v pracovní době |
30 2 1,15 * * |
1. a 15. v měsíci ve 2:30 |
Pro provedení cron úlohy na Linux serveru editujeme uživatelský crontab ze shellu:
# editace crontabu aktuálního uživatele
$ crontab -e
# výpis existujících úloh
$ crontab -l
# příklad přidaného řádku: denní backup ve 3h
0 3 * * * /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1
Příklad výstupu cron converteru pro */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 k cron decoderu
Jaký je rozdíl mezi UNIX cronem a Quartz?
UNIX/Vixie cron používá 5 polí (minuta až den-týdne), bez přesnosti na sekundu, a nemá
nativní pojem "poslední den měsíce". Quartz (Java, Spring, AWS EventBridge) přidává sloupec
sekundy na začátku, někdy sloupec rok na konci, a několik symbolů
(?, L, W, #) chybějících v Linux crontabu. Quartz
cron expression s 6 poli tedy není přímo přenosný do
/etc/crontab, a obráceně. Náš cron decoder cílí na 5polový
formát, který pokrývá většinu plánovačů.
Jak provést cron úlohu každých 5 minut?
S krokem / na poli minuty:
*/5 * * * * /usr/local/bin/check-health.sh
Tento crontab expression spouští skript v minutách 0, 5, 10, 15... každé
hodiny, každý den. Pro omezení na pracovní hodiny od pondělí do pátku přidejte omezení
na pole hodina a den-týdne: */5 9-17 * * 1-5.
Co znamená hvězdička (*) v cron expression?
Hvězdička znamená any value: matchuje všechny povolené hodnoty pole. V
0 0 * * * tři hvězdičky znamenají "jakýkoli den měsíce, jakýkoli
měsíc, jakýkoli den týdne". V kombinaci se dvěma prvními poli pevně stanovenými na 0 získáme
"každý den o půlnoci". Hvězdička se může také kombinovat s krokem: */15 v
minutě = každých 15 minut.
Má crontab časové pásmo?
Výchozí časové pásmo serveru. Na Linux crontabu je to systémová TZ (často UTC na VPS a
kontejnerech). GitHub Actions forsuje UTC. Kubernetes CronJob používá časové pásmo kontroléru,
konfigurovatelné přes spec.timeZone od 1.27. AWS EventBridge vyhodnocuje výrazy v
UTC. Aplikační plánovače (Symfony Scheduler, Quartz, Airflow) často umožňují stanovit
dedikované časové pásmo pro každou úlohu. V případě pochybnosti ověřte date na cílovém serveru a
porovnejte s výstupem cron converteru.
Cron job vs at příkaz: který vybrat?
cron slouží pro provedení opakující se úlohy podle plánu. at slouží
pro provedení příkazu jednou v daný okamžik. Pro denní backup,
rotaci logů nebo pravidelné API volání použijte cron. Pro odložení jednorázové operace
("spustit toto nasazení dnes večer ve 22h"), použijte at:
$ echo "/usr/local/bin/deploy.sh" | at 22:00
Jak otestovat cron expression bez spuštění?
To je přesně role tohoto cron converteru: počítá N dalších
provedení od aktuálního okamžiku, bez spuštění jakéhokoli jobu. Hned vidíte, zda váš
crontab expression tahá ve 03:00 jak je plánováno nebo ve 03:17 omylem. Pro jít
dál před instalací úlohy můžete také otestovat samotný skript (bash -x script.sh)
a ověřit syntaxi crontab souboru s crontab -T soubor na distribucích,
které to podporují.
Co se stane, když jsou den-měsíce a den-týdne oba stanoveny?
Na Vixie cronu (Linux) je pravidlo logické NEBO: job tahá, pokud jedno nebo
druhé ze dvou polí matchuje. Je to neintuitivní a zdroj bugů. Quartz používá
A, odtud zavedení symbolu ? pro explicitní signalizaci "žádné
omezení". Obecným pravidlem stanovte pouze jedno ze dvou polí.
Ukázka požadavku
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é | Výchozí |
|---|---|---|---|
cron |
string | ✓ | – |
number_next_date |
integer | ✓ | – |
Koncové body
GET https://cdrn.fr/api/v1/tools- vypíše všechny dostupné nástrojeGET https://cdrn.fr/api/v1/tools/cron-converter- získá schéma tohoto nástrojePOST https://cdrn.fr/api/v1/tools/cron-converter/execute- spustí tento nástroj s JSON payloadem