Operazioni pianificate con Linux

Anacron

 L'altro giorno ho aperto il terminale e mi sono messo a fare il backup di diverse directory, copiandone il contenuto in un'altra per sincronizzarla con il cloud, e mi sono chiesto: ma non c'è un modo per far fare tutto al sistema operatovp, senza che ogni volta devo aprire il terminale e fare tutto io? Una sorta di operazione pianificata? La risposta è si, e si chiama cron e anacron.

COSA SONO CRON E ANACRON
Cron e anacron sono dei demoni che possono far partire degli script o comandi del terminale in un certo periodo di tempo definito. Ad esempio un nostro script potrà essere eseguito ogni ora, oppure ogni giorno o una volta alla settimana, senza che noi lo eseguiamo ogni volta, in poche parole l'operazione diventerà parte integrante del sistema operativo.

 

INSTALLAZIONE
Siccome anacron si trova nel pacchetto di cronie, dobbiamo installare esso sul nostro computer.

Se siamo con Ubuntu, installiamolo semplicemente dando questo comando:

 

sudo apt-get install anacron

Su Fedora lo possiamo trovare installando il seguente pacchetto:

 

sudo yum install cronie


Stessa cosa per Arch Linux, lo possiamo trovare nel pacchetto cronie:

 

pacman -S cronie

Una volta installato dobbiamo abilitare il servizio di cronie per far partire il programma al boot del sistema operativo, per fare ciò useremo systemctl.

Quindi diamo il seguente comando per abilitare il servizio al boot:

 

systemctl enable crond.service

Oppure, se siamo su Arch Linux:

 

systemctl enable cronie.service


Se invece vogliamo solo farlo partire ma non al boot, allora al posto di enable scriviamo start. Invece se vogliamo lo stato del servizio scriviamo status.

È possibile anche stoppare o disabilitare il servizio, rispettivamente con stop e disable. Per ulteriori informazioni su systemctl vi ricordo che potete consultare il manuale da terminale dando:

 

man systemctl

Prima abbiamo nominato sia cron che anacron, ma qual'è la differenza tra i due?

Cron legge il suo file di configurazione, ed esegue il comando o lo script solo se il computer è acceso, invece ad anacron viene stabilito un range, nel suo file di configurazione, in cui esso deve operare, ad esempio tra le 10 del mattino e le 16 del pomeriggio, quindi con la differenza che il comando o script verrà eseguito non appena si accende la macchina in questo range.

CONFIGURIAMO ANACRON
Il file di configurazione di anacron si trova nella directory /etc, quindi per aprirlo diamo ad esempio il seguente comando:

 

nano /etc/anacrontab

 

anacrontab


Come possiamo vedere nell'immagine, nelle prime righe abbiamo delle variabili di configurazione per anacron, ad esempio nella prima abbiamo il tipo di shell con cui verranno eseguiti i comandi e script, e nella seconda abbiamo il path in cui trovare i vari programmi.

Poi abbiamo una variabile RANDOM_DELAY in cui metteremo i minuti di ritardo con cui andranno ad essere eseguiti i vari comandi.

Sotto ancora abbiamo START_HOURS_RANGE, ossia il range in ore in cui i comandi andranno ad essere eseguiti, ad esempio mettendo 3-22, verranno eseguiti tra le 3 del mattino e le 22 di sera.

Le rimanenti linee nel file di configurazione sono nel seguente formato:

 

periodo in giorni ritardo in minuti id-job comando


Con “periodo in giorno”, andiamo a specificare, con un numero intero, ogni quanti giorni verrà eseguito il comando, ad esempio mettendo il numero 2, esso verrà eseguito ogni 2 giorni. Al posto di numeri interi si possono anche mettere delle macro, come ad esempio @daily che indica giornalmente (quindi al posto del numero 1), @weekly indica ogni 7 giorni e @monthly indica ogni mese.

Con “ritardo in minuti” indichiamo i minuti che anacron dovrà aspettare per l'esecuzione del comando, se mettiamo il numero 0, allora non aspetterà nessun minuto.

Id-job è l'identificatore del comando eseguito, ossia un file di log che verrà inserito nella directory /var/spool/anacron, in esso è salvata la data di esecuzione del comando.

Infine abbiamo comando, che da come avremo intuito è il comando che verrà eseguito.

Le righe che iniziano con il carattere # verranno ignorate.

Ad esempio, riferendoci all'immagine di sopra, nell'ultima riga abbiamo:

 

1 6 baup.daily /bin/bash /etc/backupTuxCron


Ossia, lo script /etc/backupTuxCron, verrà eseguito ogni giorno, con un ritardo di sei minuti, in cui verrà aggiunto il RANDOM_DELAY, ed esso è identificato dal file di log baup.daily.

CONFIGURIAMO CRON
La configurazione di cron è molto simile a quella di anacron. Anche per esso abbiamo un file di configurazione all'interno della directory /etc, e si chiama crontab. Di default, dopo l'installazione, a me non si è creato, ma nessun problema si può creare anche manualmente.

Anch'esso è composto nelle prime righe dalle variabili di configurazione come nel file anacrontab, quindi con SHELL, PATH, MAIL e una variabile HOME=/ che indica che la home, per cron parte da /.

Le righe seguenti, come prima, servono per pianificare l'esecuzione dei programmi, e sono nel seguente formato:

 

minuti ore giorni mesi giorni della settimana username comando


Con minuti in quale minuto dell'ora deve essere eseguito il comando, viene specificato con un intero da 0 a 59, volendo si può mettere anche *, ossia vale per tutti i minuti.

Con ore indichiamo ogni quante ore deve essere eseguito il comando, e possiamo mettere un valore tra 0 e 23, anche qui come, come in tutti, vale *.

In giorni indichiamo in quali giorni deve essere eseguito il comando, e possiamo mettere un valore tra 1 e 31.

In mesi indichiamo in quali mesi deve essere eseguito il comando, specificandolo con un valore compreso tra 1 e 12.

In giorni della settimana specifichiamo in quali giorni deve essere eseguito il comando nella settimana, con un valore compreso tra 0 e 7.

Con username indichiamo da quale utente è eseguito il comando.

Infine con comando indichiamo ovviamente il comando da eseguire.

 

CONCLUSIONI
Bene, ora non ci resta che pianificare le nostre attività, senza dover preoccuparci ogni volta di andare ad eseguire manualmente i comando da terminale!;)

 

FONTI:
- Immagini Joel Garia;
- Cron;

Dottore in Informatica. Da sempre appassionato di Linux, reti informatiche, sicurezza e, in modo amatoriale, all'elettronica. Il mio intento è quello di trasmettere le mie conoscenze ad altri appassionati.

Lascia un commento