Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Processi Linux: anacron

Come pianificare processi Linux asincroni adoperando anacron.
Come pianificare processi Linux asincroni adoperando anacron.
Link copiato negli appunti

Dopo aver illustrato at e cron completiamo la carrellata sugli strumenti volti a pianificare processi da eseguire in futuro, eventualmente a specifici intervalli di tempo, presentando anacron. A differenza del più conosciuto cron, anacron non presuppone che il sistema su cui lo eseguirete sia perennemente attivo. Se avete effettuato una pianificazione con cron questa avrà una coordinata temporale precisa prevista per il lancio del processo, passata la quale, qualora cron in quel momento per qualsiasi motivo non dovesse essere attivo, semplicemente non accadrà nulla. Il funzionamento di anacron è differente. Infatti anacron mantiene traccia di ogni richiesta, di un intervallo di tempo auspicato fra due lanci e del momento in cui l'ultimo lancio è stato effettuato. Per eseguire la richiesta analizza queste informazioni. Se dall'ultimo lancio l'intervallo è stato superato anacron eseguirà quanto pianificato. E' importante tener presente che la granularità minima di anacron è il giorno inteso come multiplo intero delle ventiquattro ore tra cambio di data e cambio di data. Nessun intervallo di tempo a esso sottomultiplo, sotto questa caratura, esiste per anacron.

Uso di anacron

Dopo l'installazione anacron è di norma già operativo. Pianificare azioni attraverso questo strumento è piuttosto semplice quindi ne introdurremo l'utilizzo senza ulteriori preamboli. Per far ciò mostriamo immediatamente il file da cui anacron andrà a leggere le nostre richieste quindi lo commenteremo. Una delle posizioni più diffuse in cui potremmo trovarlo è /etc/anacrontab.

fprincipe@html52:~$ sudo more /etc/anacrontab
# /etc/anacrontab: configuration file for anacron
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
HOME=/root
LOGNAME=root
# secondo commento
1       1      anacron.1d      date>>/root/anacrondate
@daily  2      anacron.daily   ls -lia /root>>/root/anacrondate

Innanzi tutto vengono dichiarate le variabili necessarie per l'esecuzione. Il loro significato è evidente quindi non saranno oggetto di spiegazione.
Dopo il secondo commento vediamo due richieste entrambe composte da quattro campi.
Nel primo possiamo inserire un numero, espresso in giorni, oppure le stringhe @daily, @weekly, @monthly, @yearly o @annualy per pianificare l'esecuzione dei comandi. Nell'ordine, rispettivamente, a cadenza quotidiana, settimanale, mensile o annuale (sia per @yearly che @annualy). Quando abbiamo parlato di granularità ci riferivamo esattamente a questo, ovvero all'intervallo di tempo pianificato fra due esecuzioni dello stesso comando. Questo intervallo non può essere inferiore al giorno tuttavia occorre precisare che il secondo campo prevede l'inserimento di un numero che istruirà anacron sulla quantità di minuti da attendere prima del lancio del comando inserito nel quarto campo. Agendo opportunamente nel secondo campo è possibile "spalmare" le esecuzioni in modo da non appesantire eccessivamente la macchina con troppi comandi lanciati nello stesso momento. Infatti, se osservate i due primi campi delle righe in esame, è facile constatare che siano equivalenti. L'esecuzione del secondo comando è però ritardata di un minuto rispetto al primo. Rimane un solo campo da presentare: nel terzo campo battezzeremo il nostro comando con un nome che sarà, appunto, l'identificativo del job.
Per creare dei job da eseguire secondo le nostre esigenze, quindi, non dovremo far altro che creare una nostra versione di questo file.

Ecco l'effetto di quanto abbiamo appena inserito. Da notare che i due job saranno eseguiti ogni giorno in cui la macchina su cui anacron viene eseguito risulterà operativa.

fprincipe@html52:~$ sudo more /root/anacrondate
Mon Jan 21 18:11:50 UTC 2019
total 104
 24577 drwx------  4 root root  4096 Jan 21 18:11 .
     2 drwxr-xr-x 23 root root  4096 Dec 21 06:45 ..
  7620 -rw-r--r--  1 root root    29 Jan 21 18:11 anacrondate
[...]

Opzioni

Possiamo lanciare anacron anche da linea di comando con una serie di opzioni per ottenere determinati effetti. Richiamiamo le principali in tabella.

-f Esegue i job ignorando le informazioni temporali sull'ultima esecuzione.
-n Esegue i job senza considerare il campo in cui viene richiesto un ritardo per il lancio.
-u Aggiorna tutti i riferimenti temporali dell'ultima esecuzione come se fossero stati eseguiti al momento attuale.
-t Fa eseguire ad anacron una specifica acrontab.
-T Verifica la validità sintattica di una acrontab.
-S Specifica una determinata directory di spool ovvero il contenitore delle timestamps (che sono i riferimenti temporali alle ultime operazioni effettuate da anacron). Di norma /var/spool/anacron è la posizione in cui sono contenute le timestamps.

Se, inoltre, eseguiamo anacron da linea di comando adoperando come ultima opzione il nome di un job, il campo di applicazione di anacron sarà relativo solo a quello specifico job.

Conclusioni

L'uso di anacron potrà risultare particolarmente comodo per effettuare e automatizzare operazioni di pulitura, sincronizzazione a backup sulle macchine che alimentiamo elettricamente solo di tanto in tanto come, a puro titolo esplicativo, i computer portatili. Inoltre anacron è molto utile se utilizzato quale complemento ai nostri script.


Ti consigliamo anche