web analytics

[Guida] Cron e Anacron: programmare job periodici su GNU/Linux

cron anacron

Una delle caratteristiche essenziali dei sistemi operativi, soprattutto in ambito server, è la possibilità di eseguire automaticamente delle istruzioni, a intervalli temporali ben definiti. Nelle distribuzioni GNU/Linux esistono due possibilità per realizzare queste procedure: cron ed anacron.

Cron ed Anacron: il job scheduling su GNU/Linux

Cron, e l’omonimo demone di sistema, permette l’esecuzione periodica di operazioni come backup o aggiornamenti. È stato concepito per tutte quelle situazioni in cui la macchina rimane accesa senza soluzione di continuità. Il servizio controlla due file: /etc/crontab dove sono conservate tutte le operazioni periodiche, e /etc/cron.d/ in cui i pacchetti installati inseriscono i loro job.

Possiamo analizzare la struttura del file di configurazione, dando il seguente comando:

cat /etc/crontab

cron anacron crontab
Una descrizione completa di questo file è consultabile alla pagina 5 di man cron:

  • Le righe # sono commenti;
  • Poi abbiamo due variabili;
  • Le ultime quattro istruzioni sono le azioni da eseguire, composte da vari campi separati da spazi.

I primi cinque campi indicano la periodicità temporale,infine l’ultimo indica l’azione vera e propria. Ad esempio in questo pc possiamo notare che c’è un job che viene eseguito quotidianamente alle 6:25 e uno da eseguire a cadenza settimanale alle 6:47. Le istruzioni sono contenute in /etc/cron.daily, /etc/cron.weekly e /etc/cron.mothly, ove presenti. Ricordiamo che solo l’amministratore di sistema ha i privilegi per modificare crontab. Gli utenti possono creare il proprio scheduler dando il comando crontab -e, che al primo avvio chiederà anche quale editor utilizzare tra nano, vi o emacs. In questo caso i file verranno salvati in /var/spool/cron/crontabs.

Anacron

Anacron è sicuramente più vicino alle esigenze degli utenti desktop, il cui pc, nella maggior parte dei casi, non rimane acceso h24. La sua peculiarità è che quando esegue le operazioni periodiche, controlla anche se queste non sono state avviate, poiché magari la macchina era spenta.

Analogamente possiamo osservare il contenuto del relativo file di configurazione, dando il comando cat /etc/anacrontab l’output sarà analogo al seguente:

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
HOME=/root
LOGNAME=root
START_HOURS_RANGE=6-23

@daily    	42      example.daily           /bin/bash /home/alessandro/bin/backup.sh
1		10	cron.daily		run-parts --report /etc/cron.daily
@weekly	        10	cron.weekly		run-parts --report /etc/cron.weekly
@monthly	15	cron.monthly	        run-parts --report /etc/cron.monthly

Le variabili HOME e LOGNAME indicano la directory e l’utente per cui vengono eseguite le operazioni periodiche. Utile anche START_HOURS_RANGE che indica la fascia oraria di avvio dei job. Analizziamo ora le righe contenenti le azioni:

  • il primo campo indica la periodicità, notiamo che non si può indicare l’orario preciso;
  • il secondo campo serve a non far sovrapporre l’esecuzione automatica degli script.

Osserviamo l’esempio del primo job periodico programmato. Anacron controlla se lo script di backup è stato eseguito nel periodo indicato, leggendo l’ora dell’ultima esecuzione nel file /var/spool/anacron. In caso negativo, perché magari il pc era spento, prima di eseguirlo attenderà 42 minuti.

Tutti i dettagli sul suo funzionamento sono consultabili mediante man anacron.

sharing-caring-1Seguiteci sul nostro canale Telegram, sulla nostra pagina Facebook e su Google News. Nel campo qui sotto è possibile commentare e creare spunti di discussione inerenti le tematiche trattate sul blog.