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