clockPrima o poi un amministratore di sistema avrà la necessità di eseguire delle operazioni ad intervalli regolari; ad esempio una di queste motivazioni potrebbe essere quella di effettuare dei backup, o semplicemente programmare l'esecuzione di un lavoro, in date e orari prestabiliti. Nei sistemi operativi Unix e Unix-like queste operazioni vengono effettuate grazie ai crontab.
Per fissare o meglio pianificare(schedulare) gli eventi su una macchina linux è innanzitutto necessario avere a disposizione il demone che si occupa appunto dello scheduling. Questo demone chiamato cron è avviato in automatico allo startup del sistema.

Per editare i file di configurazione dei crontab, (/var/spool/cron/crontab/nomeutente) il modo migliore è quello di usare il comando:
crontab -e


in questo modo si richiamerà l’editor di sistema che, nella maggior parte dei casi è "vi". Il comando crontab può essere lanciato anche con altre opzioni oltre a quelle di editing.
Mentre tramite il parametro:
crontab -l

è possibile per esempio, avere la lista dei crontab attualmente attivi.

Da notare che ogni utente può avere i propri crontab personali. Quando lanciamo il comando crontab -e editiamo i crontab dell’utente corrente, ma se volessimo modificare i crontab di un altro utente, ovviamente da root, potremmo lanciare il comando: crontab -e nomeutente.

“Attenzione all’opzione crontab -d cancella tutti i crontab impostati anche quelli di sistema.”

crontab [-u utente] file Sostituisce il file crontab con il contenuto del file indicato come argomento.
crontab -l [utente] Visualizza il file crontab dell'utente.
crontab -e [utente] Crea o modifica il file crontab dell'utente.
crontab -r [utente] Cancella il file crontab dell'utente

se non viene definito l'utente verrà preso in considerazione l'utente con cui siamo loggati.

La sintassi di questo file una volta compresa , risulta molto veloce da utilizzare;

1 2 3 4 5
* * * * * commando da eseguire

- - - - -
| | | | |
| | | | ----- giorno della settimana (0 - 6) (domenica=0)
| | | ------- mese (1 - 12)
| | --------- giorno del mese (1 - 31)
| ----------- ora (0 - 23)

------------- minuti (0 - 59)

Tutte e cinque le stringhe possono rappresentare un numero, tutti i valori oppure un intervallo.
Specificando un numero, si indica un momento preciso. Ad esempio, mettere 2 in s4, significa eseguire a Febbraio (vanno considerate poi anche tutte le altre 4 stringhe).
Se il particolare campo non interessa, cioe' non e' utile alla definizione del tempo di attivazione, puo' essere usato l'asterisco ("*") per indicare tutti i valori.
Molto spesso, pero' quello che serve e' un certo intervallo e non un momento unico e preciso. Per esempio, potremmo volere eseguire un comando ogni 2 minuti invece che sempre e solo nel secondo minuto. In questo caso, possiamo scrivere le cinque stringhe (o solo una parte di esse) sotto forma di intervallo. Vediamone qualche formato (non tutti potrebbero essere supportati su tutti i sistemi):

*/n indica ogni "n". - Esempio, "*/2" indica ogni 2.
n1-n2 indica da n1 a n2. - Esempio, "5-8" indica 5,6,7,8.
n1-n2/n3 indica ogni n3 all'interno del range n1-n2. - Esempio, 3-21/6 indica 3,9,15,21 (ongi 6 nel range 3-21).
n1,n2,... indica i numeri specificati. - Esempio, 4,7,8 indica tutti i numeri scritti.
n1-n2,n3-n4 indica da n1 a n2 e da n3 a n4. - Esempio, 3-5,7-9 indica 3,4,5,7,8,9.


Esempi pratici:

# Esegue il comando indicato ogni cinque minuti, solo il 15 di ogni mese,
# con proprietario "root"
*/5 * 15 * * root /bin/ls /var/log>/temp/ls.out

# Manda una mail con il testo indicato ogni giorno alle 8:00 di mattina,
# con proprietario "root". Se MAILTO vale "root" allora la mail arriva a root.
0 8 * * * root echo "Buongiorno!!!"

#Esegue ogni minuto!!! Il proprietario e' "pippo".
* * * * * pippo /usr/bin/gimp

Commenti  

+1 #1 www.leferycrema.it 2015-07-09 22:22
. Ben detto. E scritto anche meglio.

You have no rights to post comments

Loading feeds...

Logo Design Company