Una guida alle espressioni Cron

1. Panoramica

In poche parole, cron è un'utilità di base disponibile sui sistemi basati su Unix. Consente agli utenti di pianificare le attività da eseguire periodicamente in una data / ora specificata. Inoltre, è naturalmente un ottimo strumento per automatizzare molte esecuzioni di processi che altrimenti richiederebbero l'intervento umano.

Cron viene eseguito come un processo daemon: ciò significa che deve essere avviato solo una volta e continuerà a funzionare in background. Questo processo fa uso di crontab per leggere le voci delle pianificazioni e dà il via alle attività.

Nel tempo, il formato dell'espressione cron è stato ampiamente adottato e molti altri programmi e librerie lo utilizzano.

2. Lavorare con Crontab

Una pianificazione cron è un semplice file di testo che si trova in / var / spool / cron / crontabs su sistemi Linux. Non possiamo modificare direttamente i file crontab ; dobbiamo accedervi usando il comando crontab .

Ad esempio, per aprire il file crontab , dobbiamo lanciare questo comando:

crontab -e

Ogni riga in crontab è una voce con un'espressione e un comando da eseguire:

* * * * * /usr/local/ispconfig/server/server.sh

Questa voce esegue lo script menzionato ogni singolo minuto.

3. Espressione cron

Comprendiamo l' espressione cron ; si compone di cinque campi:

3.1. Caratteri speciali nell'espressione

  • * (all) - specifica che l'evento dovrebbe verificarsi per ogni unità di tempo. Ad esempio, "*" nel campo < minuto> significa "per ogni minuto"
  • ? (qualsiasi) - viene utilizzato nei campi < giorno del mese> e < giorno della settimana> per indicare il valore arbitrario - trascura il valore del campo. Ad esempio, se vogliamo attivare uno script al "5 di ogni mese" indipendentemente da quale giorno della settimana cade in quella data, allora specifichiamo un " ? ”Nella < giorno della settimana> campo
  • - (intervallo) : determina l'intervallo di valori. Ad esempio, " 10-11 " in campo significa "decima e undicesima ora"
  • , (valori) : specifica più valori. Ad esempio, " LUN, MER, VEN" nel campo < giorno della settimana> indica i giorni "lunedì, mercoledì e venerdì"
  • / (incrementi) : specifica i valori incrementali. Ad esempio, un "5/15" nel campo < minuto> significa "5, 20, 35 e 50 minuti di un'ora"
  • L (ultimo) - ha significati diversi se utilizzato in vari campi. Ad esempio, se viene applicato nel campo < giorno del mese> , significa l'ultimo giorno del mese, ovvero "31 gennaio" e così via come per il mese di calendario. Può essere utilizzato con un valore di offset, come " L-3 ", che denota il "penultimo giorno del mese di calendario". Nel < giorno della settimana> , specifica l '"ultimo giorno della settimana". Può essere utilizzato anche con un altro valore in < day-of-week> , come " 6L ", che indica l '"ultimo venerdì"
  • W (giorno della settimana) : determina il giorno della settimana (dal lunedì al venerdì) più vicino a un determinato giorno del mese. Ad esempio, se specifichiamo " 10W " nel campo < giorno del mese> , significa "giorno della settimana vicino al 10 di quel mese". Quindi, se "10th" è un sabato, il lavoro verrà attivato il "9th" e se "10th" è una domenica, verrà attivato "11th". Se specifichiamo " 1W " nel < giorno del mese> e se "1 °" è sabato, il lavoro verrà attivato il "3" che è lunedì e non tornerà al mese precedente
  • # - specifica la " N -esima" ricorrenza di un giorno della settimana del mese, ad esempio, "3 ° venerdì del mese" può essere indicato come " 6 # 3 "

3.2. Esempi di espressioni di cron

Vediamo alcuni esempi di espressione cron utilizzando i campi e le combinazioni di caratteri speciali:

Alle 12:00 (mezzogiorno) tutti i giorni:

0 12 * * ?

Ogni 5 minuti a partire dalle 13:00 e termina alle 13:55, quindi dalle 18:00 alle 18:55, tutti i giorni:

0/5 13,18 * * ?

Ogni minuto a partire dalle 13:00 e termina alle 13:05, tutti i giorni:

0-5 13 * * ?

Alle 13:15 e alle 13:45 tutti i martedì del mese di giugno:

15,45 13 ? 6 Tue

Alle 9:30 ogni lunedì, martedì, mercoledì, giovedì e venerdì:

30 9 ? * MON-FRI

Alle 9:30 del 15 ° giorno di ogni mese:

30 9 15 * ?

Alle 18:00 dell'ultimo giorno di ogni mese:

0 18 L * ?

Alle 18:00 dal terzo all'ultimo giorno di ogni mese:

0 18 L-3 * ?

Alle 10:30 dell'ultimo giovedì di ogni mese:

30 10 ? * 5L

Alle ore 10.00 del terzo lunedì di ogni mese:

0 10 ? * 2#3

Alle 24:00 di ogni giorno per cinque giorni a partire dal decimo giorno del mese:

0 0 10/5 * ?

4. Cron stringhe speciali

Oltre ai campi specificati nell'espressione cron, c'è anche il supporto per alcuni valori speciali predefiniti, che possiamo usare al posto dei campi:

  • @reboot : viene eseguito una volta all'avvio
  • @yearly or @annualy - viene eseguito una volta all'anno
  • @monthly - eseguito una volta al mese
  • @weekly - corri una volta alla settimana
  • @daily o @midnight - viene eseguito una volta al giorno
  • @hourly - corri ogni ora

5. conclusione

In questo rapido articolo, abbiamo esplorato i lavori cron e crontab .

Abbiamo anche visto una serie di esempi di espressioni che possiamo usare nel nostro lavoro quotidiano o semplicemente dedurre altre espressioni da.