Jak používat
- Zadejte nebo vložte cron výraz, případně vyberte některý z běžných plánů.
- Přečtěte si význam v běžném jazyce. Neplatná pole jsou označena s důvodem.
- Zkontrolujte dalších 10 časů spuštění zobrazených ve vašem místním časovém pásmu. Pokud server běží v UTC, přepněte na UTC.
- Časy spuštění zkopírujte pro sdílení nebo upravujte výraz, dokud plán nebude odpovídat tomu, co potřebujete.
Jak to funguje
Standardní výraz cron, jaký používá crontab v Linuxu (Vixie cron a cronie) a mnoho plánovačů CI a hostingu, má pět polí oddělených mezerami: minuta (0–59), hodina (0–23), den v měsíci (1–31), měsíc (1–12 nebo JAN–DEC) a den v týdnu (0–7 nebo SUN–SAT, kde 0 i 7 znamenají neděli). Každé pole přijímá * pro každou hodnotu, jednu hodnotu, rozsah jako 1-5, seznam jako 1,15,30 a krok jako */15 (každá 15. hodnota) nebo 9-17/2 (každá druhá hodina od 9 do 17). Názvy nerozlišují malá a velká písmena. Zkratky @yearly (nebo @annually), @monthly, @weekly, @daily (nebo @midnight) a @hourly znamenají 0 0 1 1 *, 0 0 1 * *, 0 0 * * 0, 0 0 * * * a 0 * * * *.
Pole den v měsíci a den v týdnu se řídí pravidlem, které mnoho lidí překvapí. Pokud některé z těchto polí začíná znakem *, musí den vyhovět oběma polím. Pokud jsou obě pole omezena, den odpovídá, když vyhoví kterémukoli z nich: 0 0 13 * 5 běží 13. den každého měsíce a také každý pátek, nejen v pátek třináctého. Protože rozhoduje, zda pole začíná znakem *, krok jako */2 se také počítá jako neomezený. To odpovídá Vixie cron a cronie; některé jiné plánovače se chovají odlišně.
Časy dalších spuštění se počítají v časovém pásmu vašeho prohlížeče nebo v UTC, které používá většina serverů a cloudových plánovačů. Cron sám používá časové pásmo počítače, na kterém běží. Při změnách letního času se skutečné démony cron liší; tento nástroj vynechává místní časy, které při posunu hodin dopředu neexistují, a opakující se hodinu uvádí jen jednou. Rozšířené syntaxe nejsou podporovány: šesti- nebo sedmipolní výrazy Quartz se sekundami nebo roky a speciální znaky ?, L, W a #.
Příklady
Kontrola stavu v pracovní době
*/15 9-17 * * 1-5 znamená každých 15 minut mezi 09:00 a 17:59, od pondělí do pátku. Poslední spuštění každý den je v 17:45.
Noční záloha
30 2 * * * běží každý den v 02:30. Pokud server používá UTC a vy jste v New Yorku, seznam dalších spuštění v režimu UTC ukazuje časy, které server skutečně použije.
Zrádná pole dne
Výraz 0 9 1 * 1 vypadá jako „9:00 prvního dne v měsíci, pokud je pondělí“, ale ve skutečnosti se spouští v 09:00 prvního dne každého měsíce a také každé pondělí. Chcete-li úlohu spouštět pouze první pondělí, naplánujte 0 9 1-7 * * a den v týdnu ověřte uvnitř skriptu.
Časté dotazy
Co znamená */5 v cronu?
Znamená to každou pátou hodnotu pole, počínaje nejnižší hodnotou. V poli minut se */5 spouští v minutách 0, 5, 10 … 55. V poli hodin se */5 spouští v 0, 5, 10, 15 a 20, takže od 20:00 do půlnoci je mezera čtyři hodiny, ne pět.
Proč se moje úloha spouští ve více dnech, než jsem očekával?
Když jsou omezena obě pole – den v měsíci a den v týdnu – cron spouští úlohu ve dnech, které odpovídají alespoň jednomu z nich. Například 0 0 15 * 1 se spouští 15. dne v měsíci a každé pondělí. Nastavte jedno z obou polí na *, aby platilo pouze to druhé.
Které časové pásmo cron používá?
Časové pásmo systému serveru, na kterém běží démon cron, pokud crontab nenastaví CRON_TZ nebo TZ (podporuje cronie). Cloudové plánovače často standardně používají UTC. Pomocí přepínače UTC zobrazíte časy, které by použil server v UTC.
Mohu použít sekundy nebo pole roku?
Ne ve standardním cronu, který má rozlišení jedné minuty a pět polí. Formáty se šesti a sedmi poli se sekundami a roky patří knihovnám Quartz, Spring a podobným a tento nástroj je nepodporuje.
Znamená 0, nebo 7 neděli?
Obě. V poli dne v týdnu znamenají 0 i 7 neděli, 1 pondělí a 6 sobotu. Můžete také psát třípísmenné názvy SUN až SAT.
Soukromí
Výraz se analyzuje a časy spuštění se počítají ve vašem prohlížeči. Nic z toho, co zadáte, se nenahrává, neukládá ani nezahrnuje do analytiky.