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 1 e 25 (in 24 versioni)
Versione 1 del 20/11/2005 12.49.57
Dimensione: 3392
Commento:
Versione 25 del 20/07/2008 18.52.15
Dimensione: 6705
Commento:
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
#format wiki
#language it
[[Indice(depth=1)]]
Linea 3: Linea 6:
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 8:
== 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 10:
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: = 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 14:
5 3 * * * /usr/bin/apt-get update crontab -e
Linea 11: Linea 16:
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* a 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 17:
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 19:
{{{
*/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 28:
To edit the file, with the editor specified in your environment (which defaults to vim - '':q!'' is the command to escape without saving if you get stuck and need to read up on it or change your editor), use: 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 30:
crontab -e no crontab for nomeutente
Linea 31: Linea 32:
When you exit the editor, the new crontab file will be installed. The file is stored in ''/var/spool/cron/crontabs'' but should only be edited via the crontab command.
Linea 33: Linea 33:
== Further Considerations == = Esempi di sintassi dei comandi =
Linea 35: Linea 35:
The above commands are stored in a crontab file belonging to your user account and executed with your level of permissions. If you want to regularly run a command requiring a greater level of permissions, set up a root crontab file using: 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 e 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 106:
Depending on the commands being run, you may need to expand the root users PATH variable by putting the following line at the top of their crontab file:
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 43: Linea 111:
It is sensible to test that your cron jobs work as intended. One method for doing this is to set up the job to run a couple of minutes in the future and then check the results before finalising the timing. You may also find it useful to put the commands into script files that log their success or failure, eg:
= 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`.
Linea 45: Linea 116:
echo "Nightly Backup Successful: $(date)" >> /tmp/mybackup.log 30 19 * * * tar -cvpzf /backup_utente.tgz /home/utente/documenti
Linea 47: Linea 118:
For more information, see the '''man''' pages for '''cron''' and '''crontab''' (man is detailed on the BasicCommands page). If your machine is regularly switched off, you may also be interest in '''at''' (part of the Ubuntu base install) and '''anacron''' (found in the Universe repository) that provide other approaches to scheduled tasks.
= 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 =

 * [wiki:Ubuntu/CronHowto Documento originale]
 * [http://man.linuxquestions.org/index.php?section=0&type=2&print=1&query=cron&sourceid=mozilla-search Pagina man di cron]
 * [:AmministrazioneSistema/BackupDelSistema/BackupConTar:Guida al backup con tar]
----
CategoryAmministrazione

Indice(depth=1)

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.

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 [: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.

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

Immagine(Icone/Piccole/note.png,,center)

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 e 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:

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