CRON

Quello che segue è un promemoria sull’utilizzo di cron estratto dal wiki di ubuntu

Il servizio cron viene utilizzato per eseguire le azioni pianificate. Le informazioni necessarie a programmare ogni singola azione (con relativi tempi e procedure) sono indicate nel file di configurazione crontab.
Il sistema ha un suo file di cron (presente in /etc/crontab), ma ogni utente può creare il proprio. Per creare un file di cron è sufficiente digitare il seguente comando in una finestra di terminale:

crontab -e

Il precedente comando apre un editor di testo contenente un documento vuoto nel quale andranno inseriti i comandi desiderati; tale file andrà salvato con il nome e nel percorso suggeriti dall’editor. Se la sintassi dei comandi non è corretta le azioni non verranno eseguite.
Una volta chiuso l’editor, il nuovo file di crontab verrà salvato in /var/spool/cron/crontabs.

N.B I file di crontab possono essere modificati solo con il comando crontab -e.

Per vedere se il sistema ha salvato correttamente il proprio file di cron, digitare il seguente comando:

crontab -l

Verrà stampato l’elenco dei crontab registrati per l’utente corrente; in assenza di file di cron validi il risultato sarà simile al seguente:

no crontab for nomeutente

 Il file crontab deve rispettare una sintassi ben precisa, diversamente il sistema non accetterà le impostazioni. Quello che segue è un esempio generico:

5 3 * * * /usr/bin/apt-get update

L’esempio precedente eseguirà il comando apt-get update ogni giorno di ogni mese alle ore 03:05 (l’orario viene indicato nel formato a 24 ore).

La prima parte della voce descrive quando l’azione deve essere effettuata. Ci sono cinque campi (nell’esempio precedente, «5 3 * * *»), separati da uno spazio, ognuno dei quali accetta un numero, un asterisco o un testo appropriato. I campi specificano, in ordine (tra parentesi l’abbreviazione standard):

  • minuti, da 0 a 59 («m» minutes);
  • ore, da 0 a 23 («h» hours);
  • giorno del mese, da 1 a 31 («dom» day of month);
  • mese, da 1 a 12 («mon» month);
  • giorno della settimana, da 0 (domenica) a 6 (sabato) («dow» day  of week).

Il campo del mese e quello del giorno della settimana permettono di usare un’abbreviazione, come ad esempio «jan» per gennaio (in inglese January) o «thu» per giovedì (in inglese Thursday). Quello che segue è un esempio del contenuto di un crontab di sistema:

m h dom mon dow user    command
17 *    * * *   root    run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || run-parts --report /etc/cron.daily
47 6    * * 7   root    test -x /usr/sbin/anacron || run-parts --report /etc/cron.weekly
52 6    1 * *   root    test -x /usr/sbin/anacron || run-parts --report /etc/cron.monthly

L’asterisco «*» consente di non specificare alcun valore per il campo in cui viene inserito.

Quello che segue è un esempio utile a chiarire l’uso della sintassi:

12 03 * * 1,4 /percorso/script.cgi

Segue la spiegazione dei singoli parametri:

  • 12: minuti;

  • 03: ore;

  • *: giorno del mese (tutti i giorni);

  • *: mese (tutti i mesi);

  • 1,4: giorni della settimana, separati da una virgola (il lunedì e il giovedì);

  • /percorso/comando: comando da eseguire;.

Una volta impostata tale pianificazione, ogni lunedì e giovedì, alle ore 3:12, verrà eseguito il comando /percorso/comando.

Quelle che seguono sono alcune varianti della precedente pianificazione d’esempio:

Stringa

Descrizione

«12 03 * * *»

tutte le mattine, più o meno alle 3

 

 

« 12 03 15 * *»

tutti i 15 del mese, alla stessa ora

 

 

«12 03 31 * *»

7 volte l’anno, alla stessa ora

 

«0 12 * * 0»

ogni domenica, a mezzogiorno

 

«2 0 * * *»

ogni giorno, più o meno a mezzanotte

 

«02 03 * * 1,5»

ogni lunedì e venerdì, alle 3 del mattino circa

Seguono sono ulteriori esempi:

  • */5 9-17 * * mon,tue,wed,thu,fri wall "Siamo ancora qui?"

    Stampa un messaggio ogni 5 minuti, dalle 9 alle 17 da lunedì a venerdì.

  • 0 9 10 jan * echo "È il compleanno di tua madre oggi!" > ~/readme

    Ricorda un compleanno alle 9 di mattina del 10 gennaio di ogni anno.

Per vedere quali crontab sono in esecuzione sul sistema è sufficiente digitare il seguente comando:

crontab -l

 Il file crontab dell’utente contiene comandi che verranno eseguiti con il livello di permessi dell’utente stesso. Se si desidera pianificare un’azione che richiede i privilegi di amministrazione è possibile creare un file di crontab per l’utente root con il seguente comando:

sudo crontab -e

A seconda dei comandi che si desidera utilizzare, potrebbe essere necessario modificare la variabile d’ambiente «PATH», inserendo la seguente linea all’inizio del file di crontab dell’utente:

PATH=/usr/sbin:/usr/bin:/sbin:/bin

Uno degli utilizzi più frequenti del comando cron riguarda l’esecuzione periodica del backup dei dati. Nel seguente esempio cron eseguirà un backup giornaliero, alle ore 19:30, della cartella /home/utente/documenti e delle sue sottocartelle, creando un file di archivio dal nome/backup_utente.tgz.

30 19 * * * tar -cvpzf /backup_utente.tgz /home/utente/documenti

 Per verificare il corretto funzionamento di cron è sufficiente impostare un’azione da eseguire pochi minuti dopo la modifica del file di crontab e osservare il risultato. A tale scopo è utile inserire il comando in un file che terrà traccia del successo o del fallimento dell’esecuzione, come nell’esempio seguente:

echo "Backup riuscito: $(date)" >> /tmp/mybackup.log

Lascia un commento