Se mai avete sentito parlare di crontab, cron o cronjobs e non siete mai riusciti a capire di cosa si stava parlando: questo tutorial è per voi!
Allora innanzitutto cron è uno script utilissimo, e anche se ora non sapete di cosa stia parlando alla fine lo troverete utilissimo e vi risolverà molti problemi… Crontab si utilizza sotto linux e consente lo scheduling di comandi, ovvero permette di salvarli in un file apposito (che poi vedremo) e fare in modo che il sistema li esegua in automatico ad intervalli regolari. Ora vi spiego più o meno come funziona… Crontab usa un demone chiamato crond, che è costantemente in esecuzione, e ogni minuto recupera le informazioni contenute nel file di crontab. Il file di crontab segue una certa sintassi per l’esecuzione dei processi:
* * * * * comando/da/eseguire
- - - - -
| | | | |
| | | | +----- giorno della settimana (0 - 6) (domenica=0)
| | | +------- mese (1 - 12)
| | +--------- giorno del mese (1 - 31)
| +----------- ora (0 - 23)
+------------- minuti (0 - 59)
Allora spiegare come funziona è un po complicato… però non scoraggiatevi è più facile di quanto sembri! Vi chiarisco le idee con qualche esempio:
30 * * * * comando
# viene eseguito ogni 30 minuti (di ogni ora, di ogni giorno, ...)
30 1,2,3 * * * comando
# viene eseguito ogni 30 minuti però solo all'una, alle due e alle tre(di ogni giorno, ...)
* 1-5 * * * comando
#viene eseguito ogni ora dall'una alle cinque (di ogni giorno, ....)
0,15,30,45 * 1 1 * comando
#viene eseguito ogni 15 minuti di ogni ora solo il 1° gennaio
* * * * 0,5 comando > /tmp/comando.log
#viene eseguito ogni domenica e venerdi e salva l'output del comando nel file
Con questi esempi spero di avervi chiarito un po le idee in merito a questo file di configurazione. Nell’ultimo esempio avete visto come il comando viene seguito dal salvataggio dell’output, questa tecnica è utile a capire cosa succede quando il comando è in esecuzione, in modo da salvare eventuali malfunzionamenti o errori. Per poter modificare il file di crontab dovete digitare:
crontab -e
Normalmente, l’output dei comandi eseguiti da crontab, viene per default inviato, dal demone cron, al relativo utete tramite mail. Per disabilitare l’email di notifica basta redigere l’output del comando in questo modo:
* * * * 1 comando > /dev/null 2>&1
Questo è tutto… ora sapete come si esegue un comando in automatico senza che voi facciate nulla