GNU/Linux >> Znalost Linux >  >> Linux

Jak dát cronovi pokyn, aby provedl úlohu každý druhý týden?

Odpověď

Upravte logiku úterního cronu tak, aby se spouštěla ​​každý druhý týden od epochy .

S vědomím, že týden má 604 800 sekund (ignorujte změny letního času a přestupné sekundy, děkujeme) a používáte datum GNU:

0 6 * * Tue expr `date +\%s` / 604800 \% 2 >/dev/null || /scripts/fortnightly.sh

Na stranu

Aritmetika kalendáře je frustrující.

Odpověď @xahtep je skvělá, ale jak poznamenal @Doppelganger v komentářích, v určitých ročních hranicích selže. Žádné z date zde mohou pomoci specifikátory „týdne roku“ nástroje. Některé úterý na začátku ledna bude nevyhnutelně opakovat týdenní paritu posledního úterý v předchozím roce:2016-01-05 (%V), 2018-01-02 (%U) a 2019-01-01 (%W) .


pilcrowova odpověď je skvělá. Výsledkem však je, že skript fortnightly.sh se spouští každý sud týden (od epochy). Pokud potřebujete, aby skript běžel na liché týdnů, můžete jeho odpověď trochu upravit:

0 6 * * Tue expr \( `date +\%s` / 604800 + 1 \) \% 2 > /dev/null || /scripts/fortnightly.sh

Změnou 1 na 0 se posune zpět na sudé týdny.


A co tohle, udržuje to v crontab i když není přesně definován v prvních pěti polích:

0 6 * * Tue expr `date +\%W` \% 2 > /dev/null || /scripts/fortnightly.sh

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

  2. Jak spustit crontab job každý týden v neděli

  3. Jak nastavit úlohu CRON, aby se spouštěla ​​každých 10 sekund v Linuxu?

  1. Jak provést „datum“ uvnitř úlohy Cron Tab?

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

  3. Jak spustit úlohu cronu každý den v určitou hodinu?

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

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

  3. Jak nakonfigurovat úlohu cron, aby se spouštěla ​​každé 2 dny ve 23:00