Questo sito utilizza i cookie per personalizzare i contenuti e gli annunci (Google AdSense), fornire le funzioni dei social media (condivisione degli articoli) e analizzare il traffico (Google Analytics). Inoltre fornisce informazioni sul modo in cui utilizzi il sito alle agenzie pubblicitarie, agli istituti che eseguono analisi dei dati web e ai social media miei partner (Google). Il proseguimento nella navigazione implica un tacito assenso all'utilizzo dei cookies. Se non sei d'accordo sull'utilizzo, ti invito ad allontanarti da questo sito. Visualizza i dettagli.

Sabato 3 Dicembre 2016

Valutazione attuale: 0 / 5

Stella inattivaStella inattivaStella inattivaStella inattivaStella inattiva
 

Alcuni processi, come ad esempio i backup, devono essere eseguiti ripetutamente ed ad orari prestabiliti. Vediamo come automatizzarne l'esecuzione.

Per rendere più semplice l'esecuzione ricorsiva dei comandi, i sistemi Unix e Unix Like mettono a disposizione diversi tool. Il più comune è sicuramente Cron.

Cron è un demone che permette schedulare l'esecuzione di un comando in un qualsiasi momento prestabilito, purchè tale comando abbia una occorrenza, o entry, nel file /etc/crontab. Il file crontab viene letto e mantenuto in memoria dal demone Cron ogni minuto, ciò ci permette di apportare le modifiche alle schedulazioni o di inserire nuove entry senza dover far ripartire il demone ogni volta.

Le entry inserite sono di proprietà dell'utente che le ha inserite e ne ereditano i permessi. Per vedere una lista delle attività schedulate per il proprio utente, qualora ve ne fossero, da una shell digitare

crontab -l

se invece volessimo vedere le entry di un altro utente dovremmo avere privilegi sufficenti ed utilizzare l'pzione -u %nome_utente%

crontab -u %nome_utente% -l

se presenti, le entry relative all'uente verranno visualizzate.

N.B.: L'opzione -u può essere usata in abinamento alle altre opzioni per aggiungere, visualizzare o modificare le schedulazioni di utenti diversi da quello correntemente usato. 

Prendiamo il seguenate esempio.

00 13 * * 2-6 cp -fR /%PATH_ORIGINE%/*.* /%PATH_DESTINAZIONE%/

qui è riportato l'output dell'opzione -l del comando crontab.

Come possiamo vedere la parte finale della stringa rappresenta il comando da eseguire, in questo caso una semplice copia di file da una directory %PATH_ORIGINE% ad una directory %PATH_DESTINAZIONE%. La parte iniziale della stringa invece è composta dalle informazioni della schedulazione. La sintassi delle opzioni è così composta:

mm HH GG MM SS

dove

mm indica i minuti e può assumere valore da 0 a 59
HH indica le ore e può assumere valore da 0 a 23
GG indica il giorno del mese e può assumere valore da 1 a 31
MM indica il mese e può assumere valore da 1 a 12
SS indica il giorno della settimana e può assumere valore da 0 a 7, dove 0 e 7 indicano la domenica

questi campi possono anche assumere valore *, che indica al demone Cron che ogni possibile valore è ammesso. Nell'esempio la copia avviene alle 13.00, dal martedì al sabato, di ogni settimana e di ogni mese.

Apprese queste nozioni non ci resta che aggiungere la nuova entry al file crontab. Per far questo dobbiamo usare l'editor del comando crontab. Da una shell digitiamo il comando:

crontab -e

verrà aperto un vi che ci permetterà di modificare le occorrenze esistenti o di aggiungerne altre rispettando la sintassi descritta pocanzi.