6 999
contributi
S3v (discussione | contributi) m (→Logging) |
S3v (discussione | contributi) (aggiunto paragrafo "Messaggi di output") |
||
Riga 1: | Riga 1: | ||
{{Versioni compatibili}} | {{Versioni compatibili}} | ||
==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 ("job" o "cronjob") in qualsiasi momento desideriate, ogni minuto, ogni ora, giornalmente, settimanalmente, mensilmente, annualmente. | 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 ("job" o "cronjob") in qualsiasi momento desideriate, ogni minuto, ogni ora, giornalmente, settimanalmente, mensilmente, annualmente. | ||
Riga 33: | Riga 33: | ||
* <code>'''file'''</code> : inserisce il contenuto del file nel crontab dell'utente specificato tramite l'opzione '-u'. Se non viene specificato nessun utente, allora il contenuto del file sarà inserito nel crontab dell'utente che lancia il comando (vedi anche: [[Utilizzo_del_servizio_di_scheduling_Cron#Importare_un_file_crontab | Importare un file crontab]]) | * <code>'''file'''</code> : inserisce il contenuto del file nel crontab dell'utente specificato tramite l'opzione '-u'. Se non viene specificato nessun utente, allora il contenuto del file sarà inserito nel crontab dell'utente che lancia il comando (vedi anche: [[Utilizzo_del_servizio_di_scheduling_Cron#Importare_un_file_crontab | Importare un file crontab]]) | ||
==cron.allow & cron.deny== | == cron.allow & cron.deny == | ||
In un sistema Debian, di default, tutti gli utenti, oltre root, possono eseguire il comando <code>crontab</code>.<br/> | In un sistema Debian, di default, tutti gli utenti, oltre root, possono eseguire il comando <code>crontab</code>.<br/> | ||
Questo comportamento può essere modificato attraverso la creazione di due file: | Questo comportamento può essere modificato attraverso la creazione di due file: | ||
Riga 42: | Riga 42: | ||
Root è sempre abilitato all'utilizzo di <code>crontab</code>, indipendentemente dall'esistenza o meno di questi due file e dal loro contenuto. | Root è sempre abilitato all'utilizzo di <code>crontab</code>, indipendentemente dall'esistenza o meno di questi due file e dal loro contenuto. | ||
==Voci in un file crontab== | == Voci in un file crontab == | ||
Solo due tipi di voci sono permesse in un file crontab: i settaggi ambientali (Crontab Environmental settings) e i settaggi di comando (Crontab Command settings) | Solo due tipi di voci sono permesse in un file 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> | ||
Riga 52: | Riga 53: | ||
Le variabili a cui è possibile assegnare un valore sono: | Le variabili a cui è possibile assegnare un valore sono: | ||
* <code>'''SHELL'''</code>: se non assegnata viene settata automaticamente da Cron a <code>/bin/sh</code> .<br/>Poiché in Debian l'interprete dei comandi a cui punta <code>/bin/sh</code> è <code>/bin/dash</code>, accertarsi che la sintassi dei comandi sia compatibile con '''dash'''; altrimenti modificare la variabile SHELL in maniera conforme all'interprete utilizzato, ad esempio:<pre>SHELL=/bin/bash</pre>Questa modifica potrebbe essere necessaria nel caso in cui si voglia eseguire attraverso Cron uno [[script]] Bash. | * <code>'''SHELL'''</code>: se non assegnata viene settata automaticamente da Cron a <code>/bin/sh</code> .<br/>Poiché in Debian l'interprete dei comandi a cui punta <code>/bin/sh</code> è <code>/bin/dash</code>, accertarsi che la sintassi dei comandi sia compatibile con '''dash'''; altrimenti modificare la variabile SHELL in maniera conforme all'interprete utilizzato, ad esempio:<pre>SHELL=/bin/bash</pre>Questa modifica potrebbe essere necessaria nel caso in cui si voglia eseguire attraverso Cron uno [[script]] Bash. | ||
* <code>'''PATH'''</code>: anche questa variabile, se non le viene assegnato un valore, è settata automaticamente da Cron a <code>/usr/bin:/bin</code> . È utile cambiare questo valore | * <code>'''PATH'''</code>: anche questa variabile, se non le viene assegnato un valore, è settata automaticamente da Cron a <code>/usr/bin:/bin</code> . È utile cambiare questo valore se i comandi contenuti all'interno di uno script lanciato da ''Cron'' utilizzano a loro volta comandi non presenti in ''/usr/bin'' o ''/bin''oppure se si vuole inserire un comando senza specificarne il [[path]]. Per i comandi in <code>/usr/bin</code> e <code>/bin</code>, presenti cioè nel path di default, non è necessario specificarne il path completo. | ||
* <code>'''LOGNAME'''</code>: contiene il login name dell'utente che esegue il comando <code>crontab</code>. Non può essere cambiata. | * <code>'''LOGNAME'''</code>: contiene il login name dell'utente che esegue il comando <code>crontab</code>. Non può essere cambiata. | ||
* <code>'''HOME'''</code>: contiene il path della home directory associata all'utente che esegue <code>crontab</code>. | * <code>'''HOME'''</code>: contiene il path della home directory associata all'utente che esegue <code>crontab</code>. | ||
Riga 82: | Riga 83: | ||
| | .---------- [d]ay [o]f [m]onth: giorno del mese (1 - 31) | | | .---------- [d]ay [o]f [m]onth: giorno del mese (1 - 31) | ||
| | | .------- [mon]th: mese (1 - 12) OPPURE jan,feb,mar,apr... | | | | .------- [mon]th: mese (1 - 12) OPPURE jan,feb,mar,apr... | ||
| | | | .---- [d]ay [o]f [w]eek: giorno della settimana (0 - | | | | | .---- [d]ay [o]f [w]eek: giorno della settimana (0 - 7) (la domenica vale 0 o 7) OPPURE sun,mon,tue,wed,thu,fri,sat | ||
| | | | | | | | | | | | ||
Riga 185: | Riga 186: | ||
Consultare le manpages dei comandi '''date''' e '''test''' per ottenere informazioni sul loro funzionamento. | Consultare le manpages dei comandi '''date''' e '''test''' per ottenere informazioni sul loro funzionamento. | ||
===Stringhe speciali=== | === Stringhe speciali === | ||
Al posto dei primi cinque campi è possibile inserire particolari stringhe che il demone Cron interpreta come valori corretti per i campi data/ora. Vediamole: | Al posto dei primi cinque campi è possibile inserire particolari stringhe che il demone Cron interpreta come valori corretti per i campi data/ora. Vediamole: | ||
<pre> | <pre> | ||
Riga 208: | Riga 209: | ||
</pre> | </pre> | ||
con cui il comando verrà eseguito ogni mese; in particolare il primo giorno di ogni mese, a mezzanotte. | con cui il comando verrà eseguito ogni mese; in particolare il primo giorno di ogni mese, a mezzanotte. | ||
=== Messaggi di output === | |||
L'esecuzione di comandi o script può comportare l'invio allo standard output o allo standard error dei loro messaggi d'esecuzione.<br/> Normalmente tali messaggi vengono inviati allo schermo ma, nel caso vengano eseguiti tramite ''Cron'', l'output sarà reindirizzato attraverso l'[[MTA]] di sistema all'utente specificato tramite la variabile ''MAILTO''.<br/> | |||
Questo può portare all'invio di messaggi con output indesiderato, o perché totalmente non richiesto per un determinato cronjob o perché si desidera soltanto la notifica dei messaggi d'errore nel caso il comando abbia avuto problemi.<br/> | |||
Per operare su questo aspetto si può reindirizzare l'output del comando specificato in ''Cron'' come si farebbe normalmente per la shell. | |||
* Notifica solo dei messaggi d'errore.<br/>Si reindirizza lo standard output verso "/dev/null", ad esempio:<pre>00 3 1 7 * /comando/da/eseguire > /dev/null</pre> | |||
* Soppressione totale dei messaggi.<br/>Si reindirizza sia lo standard output che lo standard error verso "/dev/null", ad esempio:<pre>00 3 1 7 * /comando/da/eseguire > /dev/null 2>&1</pre>Si noti che, in questo caso, l'impostazione:<pre>MAILTO = ""</pre> avrebbe effetto su tutti i cronjob e non solo su quello voluto. | |||
=== Esempio di crontab === | === Esempio di crontab === |
contributi