GNU/Linux >> Linux Esercitazione >  >> Linux

Come istruire cron a eseguire un lavoro ogni due settimane?

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

Linux
  1. Come impostare un cron job per eseguire un eseguibile ogni ora?

  2. Come eseguire cron job ogni ora e 10 min

  3. Come eseguire crontab job ogni settimana di domenica

  4. come eseguire cron job ogni 3 mesi?

  5. Come configurare cron job per l'esecuzione ogni 2 giorni alle 23:00

Come eseguire Cron Jobs ogni 5, 10 o 15 minuti

Come pianificare un lavoro in Cron da eseguire ogni ora in Ubuntu 20.04

Come impostare un Cron Job in Debian 10

Come impostare un Cron Job in cPanel

Come eseguire un lavoro Crontab ogni settimana la domenica

Come posso ottenere un cron job da eseguire ogni 30 minuti?