
Nei sistemi Unix e nei sistemi Linux di consegueza è un potente strumento per la pianificazione
delle operazioni da eseguire in determinati istanti che può non essere nell'immediato, oppure per eseguire operazioni ad intervalli di tempo regolari.
Lo strumento di cui staimo parlando è cron. Il comando crontab consente lo scheduling di comandi e/o operazioni, cioè registra i comandi presso il sistema operativo
affinchè siano mandati in esecuzione nell'istante di tempo specificato. Il crontab è un semplice file di testo contenente appunto i comandi registrati presso il sistema.
Per eseguire i comandi registrati presso il sistema, in background gira un demone chiamato cron che elabora il file crontab ed esegue i comandi in background nel sistema, un comando mandato in esecuzione da cron è detto cronjob.
Entriamo in dettaglio:i files crontab contengono la lista dei job che il demone elabora e decide se un comando deve essere mandato in esecuzione.
Ecco come si presenta un crontab lanciato con il comando crontab -e:
Come si può vedere dall'immagine abbiamo una prima riga che è composta nel modo seguente:
# m h dom mom dow command
I primi cinque campi permettono di specificare la frequenza con cui eseguire il sesto campo cioè il campo in cui è specificato il comando da eseguire.
Vediamo in dettaglio ogni campo cosa indica e che valori può assumere:
Campo | Cosa indica e range di valori |
m | minuti (0-59) |
h | ore (0-23) |
dom | giorno del mese (1-31) |
mom | mese (1-12) |
dow | giorno della settimana (0 - 7) (domenica = 0 oppure 7) |
command | comando da eseguire |
Ogni campo può specificare valori multipli utilizzando alcuni operatori, gli operatori sono:
Operatore | Cosa specifica | Esempio |
operatore ',' | permette di specificare una sequenza di valori | 1,5,7,8 |
operatore '-' | permette di specificare un'intervallo di valori | 13-20 |
operatore '*' | permette di specificare tutti i possibili valori per un campo | |
operatore '/' (supportato solo da alcune estensioni del demone) | permette di saltare un certo numero di valori | se nel campo ora specifichiamo "*/4" indicherà i valori "0,4,8,12,16,20" |
Vediamo ora qualche esempio di comando:
m | h | dom | mom | dow | command |
08 | 03 | * | * | * | rm -r /home/joaquin/prova/ |
Se invece volessimo far eseguire lo stesso comando tutti i giorni ogni due ore:
m | h | dom | mom | dow | command |
* | */2 | * | * | * | rm -r /home/joaquin/prova/ |
Se vogliamo che il comando venga eseguito alle ora 17:00 dal 4 al 15 maggio ma anche il lunedì allora il comando dovrà essere:
m | h | dom | mom | dow | command |
0 | 17 | 4-15 | 5 | 1 | rm -r /home/joaquin/prova/ |
È possibile specificare di voler eseguire può comandi utilizzando l'opertore ; nel campo comand
m | h | dom | mom | dow | command |
[0-59] | [0-23] | [1-31] | [1-12] | [0-7] | comando_1;comando_2;comando_3 |
mentre se vogliamo eseguire un comando solo se un primo comando va a buon fine allora dovremmo usare l'operatore && e la sintassi è la seguente:
m | h | dom | mom | dow | command |
[0-59] | [0-23] | [1-31] | [1-12] | [0-7] | comando_1 && comando_2 |
Diamo ora un'occhiata alle opzioni con cui il comando cronotab
Comando | opzione | Cosa indica |
crontab | -e | permette di modificare il crontab corrente |
crontab | -l | permette di visualizzare il crontab corrente nell'output standard |
crontab | -r | permette di rimuovere il crontab corrente |
Nessun commento:
Posta un commento