Rispondi
Modifica la logica del cron del martedì in modo che venga eseguita a settimane alterne dall'epoca .
Sapendo che ci sono 604800 secondi in una settimana (ignorando le modifiche all'ora legale e i secondi intercalari, grazie) e utilizzando la data GNU:
0 6 * * Tue expr `date +\%s` / 604800 \% 2 >/dev/null || /scripts/fortnightly.sh
A parte
L'aritmetica del calendario è frustrante.
La risposta di @xahtep è eccezionale ma, come ha notato @Doppelganger nei commenti, fallirà in determinati limiti dell'anno. Nessuno dei date
gli specificatori "settimana dell'anno" dell'utilità possono aiutare qui. Alcuni martedì di inizio gennaio ripeteranno inevitabilmente la parità settimanale dell'ultimo martedì dell'anno precedente:05-01-2016 (%V), 02-01-2018 (%U) e 01-01-2019 (%W) .
la risposta di pilcrow è fantastica. Tuttavia, risulta che lo script fortnightly.sh viene eseguito ogni pari settimana (dall'epoca). Se hai bisogno che lo script venga eseguito su dispari settimane, puoi modificare leggermente la sua risposta:
0 6 * * Tue expr \( `date +\%s` / 604800 + 1 \) \% 2 > /dev/null || /scripts/fortnightly.sh
Cambiare l'1 in uno 0 lo riporterà alle settimane pari.
Che ne dici di questo, lo mantiene nel crontab
anche se non è esattamente definito nei primi cinque campi:
0 6 * * Tue expr `date +\%W` \% 2 > /dev/null || /scripts/fortnightly.sh