fixmint
CS

Jak číst cron výraz pole po poli

Autor: · · 5 min čtení

Výraz cron je krátký řádek textu, který plánovači úloh říká, kdy má úlohu spustit. Obvyklý tvar má pět polí oddělených mezerami: minuta, hodina, den v měsíci, měsíc a den v týdnu. Řádek 0 9 * * 1-5 znamená 09:00 od pondělí do pátku. Každé pole je číslo, název, seznam, rozsah nebo krok, nebo * pro každou hodnotu. Úloha se spustí v každém čase, kdy se shodují všechna pole.

Vysvětlovač cron výrazůCron běží v špatnou dobuVyzkoušet zdarma

Pět polí

PolePovolené hodnotyPříklad
Minuta0 až 5930 je 30. minuta hodiny
Hodina0 až 239 je 09:00, ve 24hodinovém formátu
Den v měsíci1 až 3115 je 15. den
Měsíc1 až 12, nebo JAN až DEC3 nebo MAR je březen
Den v týdnu0 až 6, nebo SUN až SAT0 nebo SUN je neděle, 1 je pondělí

Některé systémy přijímají i 7 pro neděli, ale ne všechny, takže použijte 0 nebo SUN. Cron v tomto tvaru nemá pole pro sekundy, takže nejmenší krok je jedna minuta.

Seznamy, rozsahy, kroky a názvy

  • znamená každou hodnotu v poli. * * * * se spouští každou minutu.
  • Seznam používá čárky. 0 9,17 * * * se spouští každý den v 09:00 a v 17:00.
  • Rozsah používá pomlčku. 1-5 v poli dne v týdnu znamená pondělí až pátek.
  • Krok používá lomítko. */15 v poli minut znamená 0, 15, 30 a 45. 10-30/5 znamená 10, 15, 20, 25 a 30.
  • Názvy, například MON-FRI, mohou nahradit čísla. Jsou čitelnější, pokud je plánovač přijímá.

Tyto části lze kombinovat. 0 8-18/2 * * * se spouští v minutě 0 každé druhé hodiny od 08:00 do 18:00.

Běžné časové plány

VýrazVýznam
* * * * *Každou minutu
/15 * * *Každých 15 minut
0 * * * *V minutě 0 každé hodiny
0 2 * * *Každý den ve 02:00
0 9 * * 1-509:00, pondělí až pátek
0 9,17 * * *09:00 a 17:00 každý den
30 6 1 * *06:30 prvního dne každého měsíce
0 0 * * 0Půlnoc každou neděli
0 0 1 1 *Půlnoc 1. ledna
/5 9-17 * 1-5Každých 5 minut od 09:00 do 17:55, pondělí až pátek

Všimněte si, že 0 0 * * je půlnoc a 0 12 * * je poledne. Špatně zadaná hodina patří k nejčastějším chybám.

Den v měsíci a den v týdnu

Pokud jsou omezena obě pole, den v měsíci i den v týdnu, úloha se spustí, když se shodne kterékoli z nich. Toto je klasické pravidlo v Vixie cronu a mnoha systémech z něj odvozených. Takže 0 0 13 * 5 se spustí o půlnoci 13. dne každého měsíce a také každý pátek. Lidé často čekají jen pátek 13., a dostanou víc spuštění, než plánovali.

Pokud je jedno z obou polí *, počítá jen to druhé. Chcete-li spustit úlohu v pátek 13., naplánujte ji na každý pátek a datum zkontrolujte uvnitř skriptu. Jiné plánovače, včetně některých cloudových služeb, mohou používat jiná pravidla, proto si přečtěte jejich dokumentaci.

Časová pásma a letní čas

Cron běží podle hodin stroje nebo služby, na které běží, což je obvykle místní časové pásmo tohoto stroje. Úloha nastavená na 02:30 se spustí v 02:30 podle těchto hodin. Nejprve zkontrolujte pásmo (v Linuxu ukáže příkaz date). Chcete-li, aby úlohy všude sledovaly jedny hodiny, mnoho týmů provozuje servery v UTC a některé plánovače umožňují nastavit časové pásmo pro každou úlohu.

Letní čas mění hodiny dvakrát ročně. Na jaře mnoho míst přeskočí z 02:00 rovnou na 03:00, takže úloha naplánovaná na 02:30 nemá čas se spustit. Na podzim se hodina od 01:00 do 01:59 objeví dvakrát. Plánovače tyto případy řeší různě. Některé úlohu přeskočí, některé ji spustí jednou a některé dvakrát. Pokud na tom záleží, držte úlohy mimo časové okno ranní změny nebo použijte UTC.

Šest polí a Quartz

Některé plánovače přidávají pole pro sekundy na začátek, takže /10 * * * * se spouští každých 10 sekund. Plánovač Quartz pro Javu používá sekundy, minuty, hodiny, den v měsíci, měsíc, den v týdnu a volitelný rok. Přidává čtyři speciální znaky:

  • ? znamená „bez konkrétní hodnoty“. Quartz vyžaduje jeho použití v poli dne v měsíci nebo dne v týdnu, podle toho, které z nich nenastavujete.
  • L znamená poslední. L v poli dne v měsíci je poslední den měsíce a 6L v poli dne v týdnu je poslední pátek.
  • W znamená nejbližší pracovní den. 15W je pracovní den nejblíž 15. dni a nepřeskočí do jiného měsíce.
  • # znamená n-tý daný den v týdnu. 6#3 je třetí pátek.

Quartz čísluje dny jinak než pětipolový tvar. Jeho 1 je neděle a 7 je sobota, takže pondělí až pátek je 2-6, ne 1-5. Než něco zkopírujete, vždy ověřte, jaký formát váš plánovač používá.

Časté chyby

  • */7 v poli minut. Hodnoty jsou 0, 7, 14 a tak dále až do 56. Další by byla 63, což neexistuje, takže následující spuštění je v minutě 0 další hodiny. Mezera je jen čtyři minuty a rozestupy jsou nerovnoměrné. Použijte krok, který dělí 60 beze zbytku, například 5, 10, 15 nebo 30.
  • Únor 30. Takové datum neexistuje, takže 0 0 30 2 * se nikdy nespustí. Totéž platí pro 31. den v měsíci, který má 30 dní. Podle pravidla „buď-nebo“ může omezení dne v týdnu způsobit spuštění i v jiné dny, proto výsledek zkontrolujte.
  • Hodina 24 nebo minuta 60. Jsou mimo rozsah. Většina plánovačů je odmítne už při uložení, ale ne všechny.
  • Očekávání sekund. Řádek s pěti poli se spouští jen v celých minutách.
  • Záměna cronu s regulárními výrazy. V cronu znamená každou hodnotu. V regulárním výrazu znamená opakovat předchozí položku. Vzory ověřujte v testeru regulárních výrazů a řádky cronu držte odděleně.

Zkontrolujte další spuštění

Než se na plán spolehnete, přečtěte řádek obyčejnými slovy a vypište si několik jeho nejbližších časů spuštění. Vysvětlovač cron výrazů dělá obojí a je to nejrychlejší způsob, jak odhalit pravidlo „buď-nebo“ nebo neobvyklý krok.

Rychlé odpovědi

Je první pole minuty, nebo sekundy?

Minuty, ve standardním tvaru s pěti poli. Jen některé plánovače se šesti poli přidávají sekundy, a ty je řadí na první místo.

Proč se moje úloha spouští v pátek i třináctého?

Pole dne v měsíci i dne v týdnu jsou obě nastavená, takže se úloha spustí, když se shoduje kterékoli z nich. Pokud chcete jen jedno z nich, nastavte druhé na *.

Používá cron UTC?

Jen pokud je stroj nebo služba nastavena na UTC. Jinak používá místní časové pásmo daného systému.

Přeloženo z Anglický originál s pomocí AI.

Komentáře

    Zatím žádné komentáře. Buďte první.

    Vaše hodnocení (nepovinné)

    Váš e-mail se nikde nezobrazuje ani neukládá.

    Obálka knihy Agentic AI in the BrowserAgentic AI in the Browser

    Příklady použití pro AI pracovní postupy v prohlížeči, které nejprve chrání soukromí: stejná myšlenka dělat vše na vlastním zařízení, na které stojí fixmint.

    $4.99Koupit na GumroaduAnglicky