Unix – esecuzione automatica dei programmi tramite crontab

Sotto Unix, (il discorso vale anche per Linux) l'esecuzione in Automatico dei processi è demandata al programma CRON. Questo è un processo di sistema sempre attivo che ad orari prefissati lancia le applicazioni. L'elenco dei programmi da lanciare e dei relativi orari è codificato in un file chiamato "crontab" che si trova di norma sotto /etc/.
 
Il file /etc/crontab deve contenere solo i processi di sistema lanciati da root
 
Nei moderni Unix ogni utente può possedere un proprio file di "crontab" per lanciare ad orari prefissati i propri processi. Tale file si trova sotto /var/spool/cron/crontabs/ e deve essere gestito esclusivamente tramite l'apposito programma chiamato crontab.
Il programma crontab permette di inserire, visualizzare e cancellare il proprio file. I parametri con cui può essere lanciato sono:
 

crontab -r (remove) Cancella il file
crontab -l (list) Visualizza il file a video
crontab -e (edit) Permette di modificare il fil

 
Il file di crontab è codificato in 6 campi che contengono gli orari e il programma da lanciare.
I primi 5 campi sono nell'ordine:

campo valori ammessi
minuto 0-59
ora 0-23
giorno del mese 1-31
mese 1-12 oppure jan,feb,mar…
giorno settimana 0-7 (0 e 7 rappresenta domenica) oppure sun,mon,tue…

In sintesi:

Un campo può essere un asterisco che significa "dal primo all'ultimo".  Sono permessi range di numeri. I range sono due numeri separati da un trattino. I numeri specificati nel range sono inclusi. Ad esempio 8-11 specificato sulle ore indica un esecuzione alle 8, 9, 10 e 11.
Le liste sono permesse. Una lista è un set di numeri (o di range) separati da virgole. Ad esempio:
 
1,2,5,9 oppure 0-4,8-12.
 
Il "sesto" campo (il resto della linea) specifica il comando da lanciare.
Alcuni esempi:

Se il comando lanciato produce un output sullo standard output o sullo standard error, il risultato viene inviato all'utente tramite mail. Per evitare questa cosa è sufficiente reindirizzare lo standard output su un file e lo standard error sullo standard output. Volendo si può reindirizzare tutto su /dev/null. Ad esempio:

Tags: , ,

About the Author

Post a Reply

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Top