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?