Cron: il dio del tempo al vostro servizio

I sistemi Debian sono equipaggiati con Vixie Cron, un programma capace di eseguire una qualsiasi istruzione ad un giorno ed orario prefissato. Ovviamente nei sistemi che non rimangono sempre accesi (in pratica tutti i computer domestici) potrebbe capitare che all'orario stabilito di esecuzione il computer sia spento e quindi l'operazione non possa essere eseguita. In particolare, Debian installa cron predisponendolo ad eseguire tutte le operazioni a circa le sei del mattino, per non interferire con le normali attività del sistema; ciò va benissimo per un server acceso 24 ore su 24, ma non va affatto bene per il nostro mostro da scrivania, che non le eseguirebbe in pratica mai!

Studiamo allora un poco la sintassi di controllo di cron, per fare qualche piccolo aggiustamento. Il file di controllo di cron si chiama /etc/crontab; qui sono elencate le operazioni da eseguire e a quali giorni e orari:

25 6 * * * root run-parts -report /etc/cron.daily

47 6 * * 7 root run-parts -report /etc/cron.weekly

52 6 1 * * root run-parts -report /etc/cron.monthly

Pertanto, come si vede, le operazioni da eseguire sono degli script concentrati nelle cartelle /etc/cron.daily, /etc/cron.weekly, /etc/cron.monthly. Quello che interessa sono le prime cinque colonne che individuano il giorno e l'ora di esecuzione; da sinistra a destra abbiamo rispettivamente:

minuti
da 0 a 59
ore
da 0 a 23
giorno
(del mese) da 1 a 31
mese
da 1 a 12
giorno
(della sett.) da 0 a 7 ove il sette corrisponde a domenica
*
tutti i valori validi per quel campo (valore jolly)
Adesso pertanto risulta chiaro che cron è impostato ad eseguire le operazioni giornaliere alle 6:25 del mattino, quelle settimanali alle 6:47 del mattino della domenica, quelle mensili alle 6:52 del primo giorno di ogni mese. Siccome noi non siamo così mattinieri, impostiamo cron ad eseguire tutte le operazioni all'incirca alle quattro del pomeriggio modificando da root il file /etc/crontab come segue:

25 16 * * * root run-parts -report /etc/cron.daily

47 16 * * 7 root run-parts -report /etc/cron.weekly

00 18 1 * * root run-parts -report /etc/cron.monthly

salvando il file così modificato con il vostro editor preferito. Con questa impostazione cron eseguirà le operazioni giornaliere alle 4:25 del pomeriggio, quelle settimanali alle 4:47 del pomeriggio del venerdì, quelle mensili alle 6:00 del pomeriggio del primo giorno di ogni mese.

Ora che cron vi è così familiare sapete a chi rivolgervi quando dovete automatizzare qualche operazione che non sia da eseguire all'avvio del sistema.

Mauro Darida 2006-07-25