Cerca nel blog

martedì 6 luglio 2010

Cron


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:

CampoCosa indica e range di valori
mminuti (0-59)
hore (0-23)
domgiorno del mese (1-31)
mommese (1-12)
dowgiorno della settimana (0 - 7) (domenica = 0 oppure 7)
commandcomando da eseguire


Ogni campo può specificare valori multipli utilizzando alcuni operatori, gli operatori sono:

OperatoreCosa specificaEsempio
operatore ','permette di specificare una sequenza di valori1,5,7,8
operatore '-'permette di specificare un'intervallo di valori13-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 valorise nel campo ora specifichiamo "*/4" indicherà i valori "0,4,8,12,16,20"


Vediamo ora qualche esempio di comando:
mhdommomdowcommand
0803***rm -r /home/joaquin/prova/
il comando specifica che alle ore 03:08 di notte di ogni giorno dell'anno si vuole svuotare il contenuto della directroy prova.

Se invece volessimo far eseguire lo stesso comando tutti i giorni ogni due ore:
mhdommomdowcommand
**/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:
mhdommomdowcommand
0174-1551rm -r /home/joaquin/prova/

È possibile specificare di voler eseguire può comandi utilizzando l'opertore ; nel campo comand
mhdommomdowcommand
[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:
mhdommomdowcommand
[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
ComandoopzioneCosa indica
crontab-epermette di modificare il crontab corrente
crontab-lpermette di visualizzare il crontab corrente nell'output standard
crontab-rpermette di rimuovere il crontab corrente

Nessun commento:

Posta un commento