GNU/Linux >> Znalost Linux >  >> Linux

Jak říct Cronovi, aby spouštěl příkaz každý druhý den (lichý/sudý)?

Při konfiguraci cronu tak, aby spouštěl příkaz každý druhý den pomocí pole „Den v měsíci“, například takto:

1 22 */2 * * COMMAND

spustí se pokaždé, když je den v měsíci lichý:1,3,5,7,9 a tak dále.

Jak mohu nakonfigurovat cron tak, aby běžel ve dnech v měsíci, které jsou dokonce jako 2, 6, 8, 10 a tak dále (aniž bych to doslovně specifikoval, což je problematické, protože každý měsíc má jiný počet dní v měsíci)?

Přijatá odpověď:

Syntaxe, kterou jste zkusili, je ve skutečnosti nejednoznačná. V závislosti na tom, kolik dní je v měsíci, některé měsíce poběží v liché dny a některé v sudé. Způsob výpočtu totiž bere celkový počet možností a rozděluje je. Toto podivné chování můžete potlačit ručním zadáním rozsahu dnů a použitím sudého nebo lichého počtu dnů. Vzhledem k tomu, že skripty sudého dne by se nikdy nespustily 31. den delších měsíců, neztratíte nic použitím 30 dnů jako základu pro sudé dny a tím, že konkrétně určíte rozdělení, jako by bylo 31 dnů, můžete vynutit liché -denní provedení.

Syntaxe by vypadala takto:

# Will only run on odd days:
0 0 1-31/2 * * command

# Will only run on even days:
0 0 2-30/2 * * command

Vaše obava z toho, že měsíce nemají stejný počet dní, zde není důležitá, protože žádný měsíc nemá VÍCE dní než tento, a pro chudý únor se rozsah dat nikdy nebude shodovat s posledním dnem nebo dvěma, ale neuškodí to. mít to uvedené.

Jediným problémem pro tento přístup je, že pokud jste v cyklu lichých dnů, následující měsíce s 31 dny se váš příkaz spustí také prvního v měsíci. Podobně, pokud vynucujete rovnoměrný cyklus, každý přestupný rok způsobí na konci února jeden třídenní cyklus. Opravdu nemůžete obejít skutečnost, že jakýkoli pravidelný vzorec „každý druhý den“ nebude vždy padat na sudé nebo liché dny v každém měsíci, a jakkoli si to vynutíte, buď budete mít běh navíc, nebo vám běh mezi nimi chybí. měsíce s neodpovídajícím počtem dnů.

Související:Linux – zkratka pro minimalizaci všech oken?
Linux
  1. Jak spustíme příkaz uložený v proměnné?

  2. Jak spouštět Cron každých 5 minut, sekund, hodin, dnů, měsíců

  3. Jak spustit úlohu cronu v určité dny v týdnu

  1. Jak nastavit úlohu cron, aby každou hodinu spouštěla ​​spustitelný soubor?

  2. Jak spustit úlohu cron každou hodinu a 10 minut

  3. linux:jak spustit příkaz v daném adresáři

  1. Jak naplánovat spuštění programu Java každý den?

  2. Mohu spouštět úlohu cronu častěji než každou minutu?

  3. jak spustit cron job každé 3 měsíce?