Wiki Ubuntu-it

Indice
Partecipa
FAQ
Wiki Blog
------------------
Ubuntu-it.org
Forum
Chiedi
Chat
Cerca
Planet
  • Pagina non alterabile
  • Informazioni
  • Allegati
  • Differenze per "AmministrazioneSistema/Cron"
Differenze tra le versioni 3 e 29 (in 26 versioni)
Versione 3 del 20/11/2005 13.07.20
Dimensione: 3360
Commento:
Versione 29 del 20/04/2015 15.39.25
Dimensione: 6772
Commento: rimosso link non funzionante + comando man cron
Le cancellazioni sono segnalate in questo modo. Le aggiunte sono segnalate in questo modo.
Linea 1: Linea 1:
= Cos'è Cron? = ## page was renamed from CronHowTo
##docs intrepid
#format wiki
#language it
<<Indice(depth=1)>>
Linea 3: Linea 7:
Cron è un demone usato per programmare azioni che verranno così eseguite in un tempo scelto. Ogni utente ha il suo file per crontab, permettendo loro di specificare le azioni da eseguire e il numero di volte che dovranno essere eseguite. C'è anche un crontab di sistema, permettendo compiti come azioni sui log, aggiornamento dei database che devono essere fatti regolarmente, etc... = Introduzione =
Linea 5: Linea 9:
== Usare Cron == Il servizio '''cron''' viene utilizzato per eseguire le azioni pianificate. Le informazioni necessarie a programmare ogni singola azione (con relativi tempi e procedure) sono indicate nel file di configurazione '''crontab'''.
Linea 7: Linea 11:
Per usare cron, semplicemente aggiungi delle voci al tuo file di crontab. Una voce di crontab è una stringa che specifica quando lanciare un comando e il comando stesso da eseguire. Un esempio: Per consultare il manuale di '''cron''' è possibile digitare il seguente comando in una finestra di [[AmministrazioneSistema/RigaDiComando|terminale]]: {{{
 man cron }}}


= Creare e modifica un crontab personalizzato =

Il sistema ha un suo file di '''cron''' (presente in `/etc/crontab`), ma ogni utente può creare il proprio. Per creare un file di cron è sufficiente digitare il seguente comando in una finestra di terminale:
Linea 9: Linea 19:
5 3 * * * /usr/bin/apt-get update crontab -e
Linea 11: Linea 21:
La prima parte della voce descrive quando l'azione deve essere effettuata. Ci sono cinque campi, separati da uno spazio, ognuno dei quali accetta un numero, un asterisco (*), o un testo appropriato. I campi specificano, in ordine, il *minuto*, l'*ora*, il *giorno del mese*, il *mese* e il *giorno della settimana*. Il campo del mese e quello del giorno della settimana permettono di usare un'abbreviazione, come ad esempio "jan" per Gennaio (January) o "thu" per Giovedì (Thursday).
Linea 13: Linea 22:
L'esempio precedente eseguirà {{{/usr/bin/apt-get update}}} ogni giorno di ogni mese alle 03:05 (cron utilizza un tempo indicato sul sistema di 24 ore). Puoi fare in modo che '''cron''' ti annoi ogni 5 minuti durante il tuo turno di lavoro (9 di mattina - 5 di pomeriggio) con un messaggio: Il precedente comando apre un [[Ufficio/EditorDiTesto|editor di testo]] contenente un documento vuoto nel quale andranno inseriti i comandi desiderati; tale file andrà salvato con il nome e nel percorso suggeriti dall'editor. Se la sintassi dei comandi non è corretta le azioni non verranno eseguite.
Linea 15: Linea 24:
{{{
*/5 9-17 * * mon,tue,wed,thur,fri wall "Siamo ancora qui?"
}}}
o ricordarti un compleanno alle 9 di mattina il 10 gennaio ogni anno:
{{{
0 9 10 jan * echo "E' il compleanno di tua madre oggi!" > ~/readme
}}}
Per vedere il contenuto corrente del tuo file di crontab, esegui:
Una volta chiuso l'editor, il nuovo file di '''crontab''' verrà salvato in `/var/spool/cron/crontabs`.

||<tablestyle="text-align: justify; width:100%; " style="border:none;" 5%><<Immagine(Icone/Piccole/note.png,,center)>> ||<style="padding:0.5em; border:none;">''I file di'' '''crontab''' ''possono essere modificati solo con il comando'' '''crontab -e'''. ||

Per vedere se il sistema ha salvato correttamente il proprio file di '''cron''', digitare il seguente comando:
Linea 27: Linea 33:
Per modificare il file, con un editor specificato nel tuo sistema, utilizza: Verrà stampato l'elenco dei '''crontab''' registrati per l'utente corrente; in assenza di file di '''cron''' validi il risultato sarà simile al seguente:
Linea 29: Linea 35:
crontab -e no crontab for nomeutente
Linea 31: Linea 37:
Quando chiuderai l'editor, il nuovo file di crontab sarà installato. Il file è mantenuto in ''/var/spool/cron/crontabs'' ma deve essere modificato solo per mezzo del comando di crontab.
Linea 33: Linea 38:
== Considerationi Supplementari == = Esempi di sintassi dei comandi =
Linea 35: Linea 40:
I comandi precedenti sono memorizzati in un file di crontab e verranno eseguiti con il livello di permessi dell'utente a cui appartiene. Se vuoi lanciare un comando regolarmente che richiede ul livello più alto di permessi, imposta un file di crontab per root usando: Il file '''crontab''' deve rispettare una sintassi ben precisa, diversamente il sistema non accetterà le impostazioni. Quello che segue è un esempio generico:
{{{
5 3 * * * /usr/bin/apt-get update
}}}

L'esempio precedente eseguirà il comando '''apt-get update''' ogni giorno di ogni mese alle ore 03:05 (l'orario viene indicato nel formato a 24 ore).

La prima parte della voce descrive quando l'azione deve essere effettuata. Ci sono cinque campi (nell'esempio precedente, «5 3 * * *»), separati da uno spazio, ognuno dei quali accetta un numero, un asterisco o un testo appropriato. I campi specificano, in ordine (tra parentesi l'abbreviazione standard):
 * minuti, da 0 a 59 («m»);
 * ore, da 0 a 23 («h»);
 * giorno del mese, da 1 a 31 («dom»);
 * mese, da 1 a 12 («mon»);
 * giorno della settimana, da 0 (domenica) a 6 (sabato) («dow»).

Il campo del mese e quello del giorno della settimana permettono di usare un'abbreviazione, come ad esempio «jan» per gennaio (in inglese January) o «thu» per giovedì (in inglese Thursday). Quello che segue è un esempio del contenuto di un '''crontab''' di sistema:
{{{
m h dom mon dow user command
17 * * * * root run-parts --report /etc/cron.hourly
25 6 * * * root test -x /usr/sbin/anacron || run-parts --report /etc/cron.daily
47 6 * * 7 root test -x /usr/sbin/anacron || run-parts --report /etc/cron.weekly
52 6 1 * * root test -x /usr/sbin/anacron || run-parts --report /etc/cron.monthly
}}}

L'asterisco «*» consente di non specificare alcun valore per il campo in cui viene inserito.

Quello che segue è un esempio utile a chiarire l'uso della sintassi:
{{{
12 03 * * 1,4 /percorso/script.cgi
}}}

Segue la spiegazione dei singoli parametri:
 * '''12''': minuti;
 * '''03''': ore;
 * '''*''': giorno del mese (tutti i giorni);
 * '''*''': mese (tutti i mesi);
 * '''1,4''': giorni della settimana, separati da una virgola (il lunedì e il giovedì);
 * `/percorso/comando`: comando da eseguire;.

Una volta impostata tale pianificazione, ogni lunedì e giovedì, alle ore 3:12, verrà eseguito il comando '''/percorso/comando'''.

Quelle che seguono sono alcune varianti della precedente pianificazione d'esempio:

||<style="background-color:#e0cd4e;":>'''Stringa''' ||<style="background-color:#e0cd4e;":>'''Descrizione''' ||
|| «12 03 * * *» || tutte le mattine, più o meno alle 3 ||
|| « 12 03 15 * *» || tutti i 15 del mese, alla stessa ora ||
|| «12 03 31 * *» || 7 volte l'anno, alla stessa ora ||
|| «0 12 * * 0» || ogni domenica, a mezzogiorno ||
|| «2 0 * * *» || ogni giorno, più o meno a mezzanotte ||
|| «02 03 * * 1,5» || ogni lunedì e venerdì, alle 3 del mattino circa ||

Seguono sono ulteriori esempi:
 * {{{
*/5 9-17 * * mon,tue,wed,thu,fri wall "Siamo ancora qui?"
}}} Stampa un messaggio ogni 5 minuti, dalle 9 alle 17 da lunedì a venerdì.
 * {{{
0 9 10 jan * echo "È il compleanno di tua madre oggi!" > ~/readme
}}} Ricorda un compleanno alle 9 di mattina del 10 gennaio di ogni anno.

= Gestione dei crontab =

Per vedere quali '''crontab''' sono in esecuzione sul sistema è sufficiente digitare il seguente comando:
{{{
crontab -l
}}}

= Crontab per comandi root =

Il file '''crontab''' dell'utente contiene comandi che verranno eseguiti con il livello di permessi dell'utente stesso. Se si desidera pianificare un'azione che richiede i [[AmministrazioneSistema/Sudo|privilegi di amministrazione]] è possibile creare un file di '''crontab''' per l'utente '''root''' con il seguente comando:
Linea 39: Linea 111:
A seconda dei comandi che dovrai utilizzare, potresti avere bisogno di modificare la variabile PATH inserendo la seguente linea all'inizio del file di crontab dell'utente:
A seconda dei comandi che si desidera utilizzare, potrebbe essere necessario modificare la variabile d'ambiente «PATH», inserendo la seguente linea all'inizio del file di '''crontab''' dell'utente:
Linea 44: Linea 117:
E' sensato voler testare se tutto funziona come voluto. Un metodo per farlo è impostare un'azione da eseguire un paio di minuti dopo la modifica del file di crontab e vedere il risultato. Puoi anche trovare utile mettere il comando in un file che terrà traccia del successo o del fallimento dell'esecuzione: = Eseguire backup periodici =

Uno degli utilizzi più frequenti del comando '''cron''' riguarda l'esecuzione periodica del backup dei dati. Nel seguente esempio '''cron''' eseguirà un backup giornaliero, alle ore 19:30, della cartella `/home/utente/documenti` e delle sue sottocartelle, creando un file di archivio dal nome `/backup_utente.tgz`.
{{{
30 19 * * * tar -cvpzf /backup_utente.tgz /home/utente/documenti
}}}

= Verificare le impostazioni =

Per verificare il corretto funzionamento di '''cron''' è sufficiente impostare un'azione da eseguire pochi minuti dopo la modifica del file di '''crontab''' e osservare il risultato. A tale scopo è utile inserire il comando in un file che terrà traccia del successo o del fallimento dell'esecuzione, come nell'esempio seguente:
Linea 48: Linea 130:
Per maggiori informazioni, utilizza '''man''' per '''cron''' e '''crontab'''. Potrebbe anche esserti utile il comando '''at''' (che è parte dell'installazione base di Ubuntu) ed '''anacron''' (che si trova nel repository Universe) che fornisce un approccio diverso per azioni programmate.
Linea 50: Linea 131:
= Ulteriori risorse =

 * [[Ubuntu:CronHowto|Documento originale]]
 * [[AmministrazioneSistema/BackupDelSistema/BackupConTar|Guida al backup con tar]]
Linea 51: Linea 136:

Traduzione: LorenzoSfarra - Documento Originale: wiki:Ubuntu/CronHowTo
CategoryAmministrazione

Introduzione

Il servizio cron viene utilizzato per eseguire le azioni pianificate. Le informazioni necessarie a programmare ogni singola azione (con relativi tempi e procedure) sono indicate nel file di configurazione crontab.

Per consultare il manuale di cron è possibile digitare il seguente comando in una finestra di terminale:

 man cron 

Creare e modifica un crontab personalizzato

Il sistema ha un suo file di cron (presente in /etc/crontab), ma ogni utente può creare il proprio. Per creare un file di cron è sufficiente digitare il seguente comando in una finestra di terminale:

crontab -e

Il precedente comando apre un editor di testo contenente un documento vuoto nel quale andranno inseriti i comandi desiderati; tale file andrà salvato con il nome e nel percorso suggeriti dall'editor. Se la sintassi dei comandi non è corretta le azioni non verranno eseguite.

Una volta chiuso l'editor, il nuovo file di crontab verrà salvato in /var/spool/cron/crontabs.

I file di crontab possono essere modificati solo con il comando crontab -e.

Per vedere se il sistema ha salvato correttamente il proprio file di cron, digitare il seguente comando:

crontab -l

Verrà stampato l'elenco dei crontab registrati per l'utente corrente; in assenza di file di cron validi il risultato sarà simile al seguente:

no crontab for nomeutente

Esempi di sintassi dei comandi

Il file crontab deve rispettare una sintassi ben precisa, diversamente il sistema non accetterà le impostazioni. Quello che segue è un esempio generico:

5 3 * * * /usr/bin/apt-get update

L'esempio precedente eseguirà il comando apt-get update ogni giorno di ogni mese alle ore 03:05 (l'orario viene indicato nel formato a 24 ore).

La prima parte della voce descrive quando l'azione deve essere effettuata. Ci sono cinque campi (nell'esempio precedente, «5 3 * * *»), separati da uno spazio, ognuno dei quali accetta un numero, un asterisco o un testo appropriato. I campi specificano, in ordine (tra parentesi l'abbreviazione standard):

  • minuti, da 0 a 59 («m»);
  • ore, da 0 a 23 («h»);
  • giorno del mese, da 1 a 31 («dom»);
  • mese, da 1 a 12 («mon»);
  • giorno della settimana, da 0 (domenica) a 6 (sabato) («dow»).

Il campo del mese e quello del giorno della settimana permettono di usare un'abbreviazione, come ad esempio «jan» per gennaio (in inglese January) o «thu» per giovedì (in inglese Thursday). Quello che segue è un esempio del contenuto di un crontab di sistema:

m h dom mon dow user    command
17 *    * * *   root    run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || run-parts --report /etc/cron.daily
47 6    * * 7   root    test -x /usr/sbin/anacron || run-parts --report /etc/cron.weekly
52 6    1 * *   root    test -x /usr/sbin/anacron || run-parts --report /etc/cron.monthly

L'asterisco «*» consente di non specificare alcun valore per il campo in cui viene inserito.

Quello che segue è un esempio utile a chiarire l'uso della sintassi:

12 03 * * 1,4 /percorso/script.cgi

Segue la spiegazione dei singoli parametri:

  • 12: minuti;

  • 03: ore;

  • *: giorno del mese (tutti i giorni);

  • *: mese (tutti i mesi);

  • 1,4: giorni della settimana, separati da una virgola (il lunedì e il giovedì);

  • /percorso/comando: comando da eseguire;.

Una volta impostata tale pianificazione, ogni lunedì e giovedì, alle ore 3:12, verrà eseguito il comando /percorso/comando.

Quelle che seguono sono alcune varianti della precedente pianificazione d'esempio:

Stringa

Descrizione

«12 03 * * *»

tutte le mattine, più o meno alle 3

« 12 03 15 * *»

tutti i 15 del mese, alla stessa ora

«12 03 31 * *»

7 volte l'anno, alla stessa ora

«0 12 * * 0»

ogni domenica, a mezzogiorno

«2 0 * * *»

ogni giorno, più o meno a mezzanotte

«02 03 * * 1,5»

ogni lunedì e venerdì, alle 3 del mattino circa

Seguono sono ulteriori esempi:

  • */5 9-17 * * mon,tue,wed,thu,fri wall "Siamo ancora qui?"
    Stampa un messaggio ogni 5 minuti, dalle 9 alle 17 da lunedì a venerdì.
  • 0 9 10 jan * echo "È il compleanno di tua madre oggi!" > ~/readme
    Ricorda un compleanno alle 9 di mattina del 10 gennaio di ogni anno.

Gestione dei crontab

Per vedere quali crontab sono in esecuzione sul sistema è sufficiente digitare il seguente comando:

crontab -l

Crontab per comandi root

Il file crontab dell'utente contiene comandi che verranno eseguiti con il livello di permessi dell'utente stesso. Se si desidera pianificare un'azione che richiede i privilegi di amministrazione è possibile creare un file di crontab per l'utente root con il seguente comando:

sudo crontab -e

A seconda dei comandi che si desidera utilizzare, potrebbe essere necessario modificare la variabile d'ambiente «PATH», inserendo la seguente linea all'inizio del file di crontab dell'utente:

PATH=/usr/sbin:/usr/bin:/sbin:/bin

Eseguire backup periodici

Uno degli utilizzi più frequenti del comando cron riguarda l'esecuzione periodica del backup dei dati. Nel seguente esempio cron eseguirà un backup giornaliero, alle ore 19:30, della cartella /home/utente/documenti e delle sue sottocartelle, creando un file di archivio dal nome /backup_utente.tgz.

30 19 * * * tar -cvpzf /backup_utente.tgz /home/utente/documenti

Verificare le impostazioni

Per verificare il corretto funzionamento di cron è sufficiente impostare un'azione da eseguire pochi minuti dopo la modifica del file di crontab e osservare il risultato. A tale scopo è utile inserire il comando in un file che terrà traccia del successo o del fallimento dell'esecuzione, come nell'esempio seguente:

echo "Backup riuscito: $(date)" >> /tmp/mybackup.log

Ulteriori risorse


CategoryAmministrazione