Utilizzo del servizio di scheduling Cron: differenze tra le versioni

nessun oggetto della modifica
Nessun oggetto della modifica
Nessun oggetto della modifica
Riga 1: Riga 1:
{{Versioni compatibili|Tutte le versioni di Debian|}}
{{Versioni compatibili|Tutte le versioni di Debian|}}
=Introduzione al servizio di scheduling Cron=
==Introduzione al servizio di scheduling Cron==
Alcuni processi devono essere eseguiti a determinati orari, un determinato numero di volte. Esempi possono essere i processi di backup che vengono lanciati ogni notte, oppure un analizzatore di log che deve girare ogni minuto.<br/>
Alcuni processi devono essere eseguiti a determinati orari, un determinato numero di volte. Esempi possono essere i processi di backup che vengono lanciati ogni notte, oppure un analizzatore di log che deve girare ogni minuto.<br/>
Questi processi devono girare un certo numero di volte oppure in determinati giorni; il resto del tempo essi stanno fermi fino a quando un utente non interagisce con essi e li richiama (con gli appositi comandi). Questi sono i casi in cui il demone CRON si rende utile. Vi permette di programmare (o "schedulare", come si dice in gergo) l'esecuzione di un lavoro in qualsiasi momento desideriate, ogni minuto, ogni ora, giornalmente, mensilmente.
Questi processi devono girare un certo numero di volte oppure in determinati giorni; il resto del tempo essi stanno fermi fino a quando un utente non interagisce con essi e li richiama (con gli appositi comandi). Questi sono i casi in cui il demone CRON si rende utile. Vi permette di programmare (o "schedulare", come si dice in gergo) l'esecuzione di un lavoro in qualsiasi momento desideriate, ogni minuto, ogni ora, giornalmente, mensilmente.


= Le basi =
== Le basi ==
Cron può essere fatto partire da <tt>rc</tt> o da <tt>rc.local</tt> e ritorna immediatamente al prompt, sicchè non c'é bisogno di lanciarlo in background. Cron ricerca il file <tt>/etc/crontab</tt> per le voci (le cosiddette "entry") di sistema e <tt>/var/spool/cron/crontabs</tt> per le voci relative agli utenti che si trovano nel file <tt>/etc/passwd</tt>. Tutte le voci ritrovate sono caricate in memoria.
Cron può essere fatto partire da <code>rc</code> o da <code>rc.local</code> e ritorna immediatamente al prompt, sicché non c'è bisogno di lanciarlo in background. Cron ricerca il file <code>/etc/crontab</code> per le voci (le cosiddette "entry") di sistema e <code>/var/spool/cron/crontabs</code> per le voci relative agli utenti che si trovano nel file <code>/etc/passwd</code>. Tutte le voci ritrovate sono caricate in memoria.
Tutto ciò viene ripetuto ogni minuto. Il demone Cron esegue diversi compiti:
Tutto ciò viene ripetuto ogni minuto. Il demone Cron esegue diversi compiti:
* ricerca le voci ed esegue i programmi che sono stati schedulati.
* ricerca le voci ed esegue i programmi che sono stati schedulati.
Riga 12: Riga 12:
Poiché cron cerca le modifiche ogni minuto, non è necessario farlo ripartire quando sono stati effettuati dei cambiamenti nei file nella directory cron.
Poiché cron cerca le modifiche ogni minuto, non è necessario farlo ripartire quando sono stati effettuati dei cambiamenti nei file nella directory cron.


= Utilizzare crontab =
== Utilizzare crontab ==
Il demone Cron legge il file <tt>'''crontab'''</tt>; ogni utente può avere la propria versione di questo file, orientata agli specifici compiti che si vogliono eseguire. I flag associati con le applicazioni crontab specificano quando aprire crontab per avere la lista o per rimuovere e modificare compiti.
Il demone Cron legge il file <code>'''crontab'''</code>; ogni utente può avere la propria versione di questo file, orientata agli specifici compiti che si vogliono eseguire. I flag associati con le applicazioni crontab specificano quando aprire crontab per avere la lista o per rimuovere e modificare compiti.


La sintassi per il programma crontab è la seguente:
La sintassi per il programma crontab è la seguente:
Riga 23: Riga 23:
</pre>
</pre>
I parametri significano:
I parametri significano:
* <tt>'''-u'''</tt> : questa opzione comunica al sistema il nome dell'utente che "possiede" il file. Se l'opzione <tt>-u</tt> è omessa, il sistema deduce per default che state usando il vostro crontab personale. NOTA: Il comando switch user (<tt>su</tt>) può confondere il crontab, così se siete nello switch <tt>su</tt> assicuratevi di utilizzare l'opzione <tt>-u</tt>.
* <code>'''-u'''</code> : questa opzione comunica al sistema il nome dell'utente che "possiede" il file. Se l'opzione <code>-u</code> è omessa, il sistema deduce per default che state usando il vostro crontab personale. NOTA: Il comando switch user (<code>su</code>) può confondere il crontab, così se siete nello switch <code>su</code> assicuratevi di utilizzare l'opzione <code>-u</code>.
* <tt>'''-l'''</tt> : questa opzione dice a crontab di elencare i file nello standard output, cioè di visualizzare il file.
* <code>'''-l'''</code> : questa opzione dice a crontab di elencare i file nello standard output, cioè di visualizzare il file.
* <tt>'''-e'''</tt> : questa opzione dice a crontab di editare il file. Cron usa l'editor definito dalla variabile <tt>EDITOR</tt> o da <tt>VISUAL</tt><!--
* <code>'''-e'''</code> : questa opzione dice a crontab di editare il file. Cron usa l'editor definito dalla variabile <code>EDITOR</code> o da <code>VISUAL</code><!--


DA CONTROLLARE:
DA CONTROLLARE:
in Lenny queste due variabili sono vuote, e anche impostandole manualmente il risultato non cambia.
in Lenny queste due variabili sono vuote, e anche impostandole manualmente il risultato non cambia.


-->. Se nessuna di queste variabili è definita, parte in automatico l'editor "nano". L'editor salva il file in /tmp; quando si esce dall'editor, il file è immediatamente piazzato nella locazione corretta e viene aggiornato il campo data/ora.
-->. Se nessuna di queste variabili è definita, parte in automatico l'editor "nano". L'editor salva il file in <code>/tmp</code>; quando si esce dall'editor, il file è immediatamente piazzato nella locazione corretta e viene aggiornato il campo data/ora.
* <tt>'''-r'''</tt> : questa opzione rimuove il file crontab specificato. Se nessun file viene specificato, rimuove il file crontab dell'utente.
* <code>'''-r'''</code> : questa opzione rimuove il file crontab specificato. Se nessun file viene specificato, rimuove il file crontab dell'utente.


=Voci in Crontab=
==Voci in Crontab==
Solo 2 tipi di voci sono permesse nel crontab: i settaggi ambientali (Crontab Environmental settings) e i settaggi di comando (Crontab Command settings)
Solo 2 tipi di voci sono permesse nel crontab: i settaggi ambientali (Crontab Environmental settings) e i settaggi di comando (Crontab Command settings)
==Crontab Environmental settings==
===Crontab Environmental settings===
I settaggi ambientali utilizzano la seguente forma:
I settaggi ambientali utilizzano la seguente forma:
<pre>
<pre>
nome = valore
nome = valore
</pre>
</pre>
Cron conosce già le diverse variabili ambientali. Per esempio, SHELL è settato a /bin/bash.<br/>
Cron conosce già le diverse variabili ambientali. Per esempio, SHELL è settato a <code>/bin/bash</code>.<br/>
Altre variabili ambientali, come LOGNAME e HOME, sono associate al possessore del file. SHELL e HOME posso essere sovrascritte nello script, mentre non è possibile farlo con LOGNAME. Se MAILTO è definito (e non è settato a " "), tale variabile è inserita in una riga nel file crontab, e spedisce ogni messaggio generato all'utente specificato in questo campo.
Altre variabili ambientali, come LOGNAME e HOME, sono associate al possessore del file. SHELL e HOME posso essere sovrascritte nello script, mentre non è possibile farlo con LOGNAME. Se MAILTO è definito (e non è settato a " "), tale variabile è inserita in una riga nel file crontab, e spedisce ogni messaggio generato all'utente specificato in questo campo.
La seguente riga mostra MAILTO settato ad uno specifico utente (luca):
La seguente riga mostra MAILTO settato ad uno specifico utente (luca):
Riga 47: Riga 47:
MAILTO=luca
MAILTO=luca
</pre>
</pre>
== Crontab Command settings ==
=== Crontab Command settings ===
I settaggi comandi usano un formato standard: ogni riga inizia con cinque campi ora/data. Se è il crontab di sistema, il campo successivo è lo username associato con la voce. Il campo seguente sarà il comando da eseguire. Il comando verrà eseguito solo quando la data e l'ora corrente coincideranno con tutti i valori dei campi time/date del crontab.
I settaggi comandi usano un formato standard: ogni riga inizia con cinque campi ora/data. Se è il crontab di sistema, il campo successivo è lo username associato con la voce. Il campo seguente sarà il comando da eseguire. Il comando verrà eseguito solo quando la data e l'ora corrente coincideranno con tutti i valori dei campi time/date del crontab.
I campi disponibili per la data e l'ora sono i seguenti:
I campi disponibili per la data e l'ora sono i seguenti:
Riga 73: Riga 73:
</pre>
</pre>


==Esempio di Crontab==
===Esempio di Crontab===
<pre>
<pre>
# Crontab Environmental settings
# Crontab Environmental settings
Riga 97: Riga 97:
* L'ultimo valore rappresenta il percorso del comando da eseguire, con le sue eventuali opzioni
* L'ultimo valore rappresenta il percorso del comando da eseguire, con le sue eventuali opzioni


=Note=
==Note==
Il sistema non va indietro nel tempo a raccogliere i lavori cron, ma li esegue solo se la data e l'ora sono uguali alla voce nel file. Se il computer è spento quando dovrebbe essere eseguito un comando in cron, quel comando non viene eseguito.
Il sistema non va indietro nel tempo a raccogliere i lavori cron, ma li esegue solo se la data e l'ora sono uguali alla voce nel file. Se il computer è spento quando dovrebbe essere eseguito un comando in cron, quel comando non viene eseguito.
=Credits=
==Credits==
Questa guida è basata sull'originale presente su: http://openskill.info/infobox.php?ID=237
Questa guida è basata sull'originale presente su: http://openskill.info/infobox.php?ID=237
<br/>
<br/>
6 999

contributi