LINUX – Eseguire in automatico operazioni pianificate

Spesse volte, soprattutto per chi deve gestire server Linux, diventa comodo automatizzare alcune attività: pensate al backup, per esempio. Invece di doversi preoccupare costantemente di salvaguardare i proprio dati, possiamo dimenticarci di questa preoccupazione andando a configurare l’operazione di backup come una operazione automatica che il sistema farà in un determinato momento di tempo, che ovviamente saremo noi a decidere.

Ma come è possibile fare questo? Utilizzando il daemon Cron.

Cron è un demone che appunto può essere utilizzato per eseguire operazioni pianificate in base all’ora, al giorno del mese, al mese, al giorno della settimana.

Ovviamente l’utilizzo di Cron presuppone che il sistema sia sempre accesso: nel caso in cui risulti spento quando una operazione è pianificata, semplicemente questa non verrà eseguita. Per poter utilizzare Cron (che il più delle volte è disponibile già in ogni installazione di Linux) occorre che sia installato il pacchetto RPM vixie-cron e il servizio crond sia in secuzione. Per verificare che il pacchetto sia installato e che il servizio sia in esecuzione è sufficiente digitare i seguenti comandi:

rpm -q vixie-cron
/sbin/service

Ma arriviamo al punto fondamentale, ovvero a come configurare le operazioni con Cron. Il file di configurazione più importante di Cron, /etc/crontab, contiente le seguenti righe:

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly

Nelle prime quattro righe vengono inizializzate alcune variabili utilizzate per configurare l’ambiente in cui vengono eseguiote le operazioni di Cron. La variabile SHELL indica al sistema quale ambiente shell utilizzare (nell’esempio è inidicata la bash shell) mentre la variabile PATH definisce il percorso utilizzato per eseguire le operazioni. L’ouput di ogni operazione Cron viene inviato tramite e-mail al nome utente specificato nella variabile MAILTO: se quest’ultima viene lasciata vuota non viene inviata alcuna mail. La variabile HOME indica la directory home per l’esecuzioni di eventuali script o comandi.

Ogni riga del file /etc/crontab può essere vista come un’operazione e ha il seguente formato:

 

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

Come di intuisce facilmente dalla figura sopra, il primo campo si riferisce ai minuti, il secondo all’ora, il terzo al giorno del mese, ecc. : in questo modo possiamo stabilire con esattezza il momento temporale in cui vogliamo che una determinata operazione (nell’esempio command) venga eseguita. Gli intervalli tra parentesi indicano i range di valori possibili, tenendo presente che qualsiasi valore può essere sostituito con il simbolo *, che indica tutti i valori validi. Per esempio, un asterisco per il valore del mese indica di eseguire ilk comando specificato ogni mese in base alle restrizioni degli altri valori.

Con il trattino “-” invece indichiamo un intervallo di valori, metre con la virgola “,” creiamo una lista: con il simbolo “/” indichiamo invece valori che vogliamo escludere. Vediamo alcuni esempi:

1-4 (1,2,3,4)

3,4,5,7,12,56 (lista)

0-45/2 (escludiamo il valore 2 da tutti i valori comresi tra 0 e 45 )

*/4 (utilizzato nel campo del mese, indica che l’operazione verrà effettuata ogni 4 mesi)

 

Vediamo un esempio. Visto che tutti i crontab definiti dall’utente vengono salvati nella directory /var/spool/cron/ ed eseguiti usando il nome utente di chi li ha creati, per creare un crontab con un determinato utente bisogna connettersi al sistema con il nome di questo utente e digitare il seguente comando:

crontab -e

Si aprirà il crontab realtivo pronto per le modifiche e aperto con l’editor specificato nella varibile VISUAL o EDITOR. Una volta modificato il file, lo salviamo e usciamo (se utilizzaimo VI, in modalità comando digitiamo :wq). Una volta salvate la mofidiche al crontab, questo viene salvato in base al nome dell’utente e scritto nel file /var/spool/cron/nomeutente.

Il file /etc/crontab utilizza lo script run-parts per eseguire gli script nelle seguenti directory:

/etc/cron.hourly
/etc/cron.daily
/etc/cron.weekly
/etc/cron.monthly

rispettivamente in base oraria, giornaliera, settimanal, mensile. Nel caso in cui volessimo eseguire un file di cron con una fase oraria diversa, allora dovremmo aggiungerla nella directory /etc/cront.d . Tutti i file di questa directory utilizzano la medesima struttura del file /etc/crontab .

Il deamon Cron controlla il file /etc/crontab, le directory /etc/cront.d e /var/spool/cron ogni minuto per rilevare eventuali modifiche. Nel caso in cui vengano rilevate delle modifiche, il file e le directory vengono ricaricati in memoria. Nota bene: se un file crontab viene modificato, non è necessario riavviare il daemon Cron.

 

2 commenti su “LINUX – Eseguire in automatico operazioni pianificate”

  1. Pingback: upnews.it
  2. Pingback: diggita.it

I commenti sono chiusi.