GNU/Linux >> Linux Esercitazione >  >> Linux

Come dire a Cron di eseguire un comando a giorni alterni (pari/dispari)?

Quando si configura cron per eseguire un comando a giorni alterni utilizzando il campo "Giorno del mese", in questo modo:

1 22 */2 * * COMMAND

viene eseguito ogni volta che il giorno del mese è dispari:1,3,5,7,9 e così via.

Come posso configurare cron per l'esecuzione in giorni del mese che sono anche come 2,6,8,10 e così via (senza specificarlo letteralmente, il che è problematico poiché ogni mese ha un numero diverso di giorni nel mese)?

Risposta accettata:

La sintassi che hai provato è in realtà ambigua. A seconda di quanti giorni ci sono nel mese, alcuni mesi funzioneranno in giorni dispari e altri in giorni pari. Questo perché il modo in cui viene calcolato prende il numero totale di possibilità e le divide. Puoi ignorare questo comportamento strano specificando manualmente l'intervallo di giorni e utilizzando un numero pari o dispari di giorni. Poiché gli script di giorno pari non verrebbero mai eseguiti il ​​31° giorno di mesi più lunghi, non perdi nulla utilizzando 30 giorni come base per i giorni pari e specificando specificamente di dividerlo come se ci fossero 31 giorni puoi forzare dispari -giorno di esecuzione.

La sintassi sarebbe simile a questa:

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

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

La tua preoccupazione per i mesi che non hanno lo stesso numero di giorni non è importante qui perché nessun mese ha PIÙ giorni di questo, e per il povero febbraio, l'intervallo di date non corrisponderà mai all'ultimo giorno o due, ma non farà alcun male averlo elencato.

L'unico problema per questo approccio è che se sei in un ciclo di giorni dispari, dopo mesi con 31 giorni il tuo comando verrà eseguito anche il primo del mese. Allo stesso modo, se stai forzando un ciclo pari, ogni anno bisestile causerà un ciclo di tre giorni alla fine di febbraio. Non puoi davvero aggirare il fatto che qualsiasi schema regolare di "ogni altro giorno" non cadrà sempre nei giorni pari o dispari in ogni mese e in qualsiasi modo lo forzerai o avrai una corsa extra o perderai una corsa tra mesi con conteggi dei giorni non corrispondenti.

Correlati:Linux – Scorciatoia per ridurre a icona tutte le finestre?
Linux
  1. Come eseguire Cron ogni 5 minuti, secondi, ore, giorni, mesi

  2. Come eseguire un processo cron in giorni specifici della settimana

  3. Come eseguire cron job ogni ora e 10 min

  4. Come configurare il lavoro CRON per l'esecuzione ogni 10 secondi in Linux?

  5. linux:come eseguire un comando in una determinata directory

Come eseguire i comandi Linux in background

Come eseguire Cron Jobs ogni 5, 10 o 15 minuti

Come eseguire un comando Linux ogni X secondi per sempre

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

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

come eseguire cron job ogni 3 mesi?