|
Dimensione: 7115
Commento: toc 35%, da revisionare
|
Dimensione: 6786
Commento: spostata in Amministrazione
|
| Le cancellazioni sono segnalate in questo modo. | Le aggiunte sono segnalate in questo modo. |
| Linea 1: | Linea 1: |
| ## page was renamed from CronHowTo | |
| Linea 8: | Linea 9: |
| '''Cron''' è un demone usato per programmare azioni che verranno eseguite in un momento prescelto. Le informazioni necessarie a programmare l'azione (tempo ed azione definita) sono indicate nel file '''crontab'''. Ogni utente può avere il suo file per crontab, inoltre anche il sistema ha il suo file per crontab (''/etc/crontab''), che permette la programmazione di azioni sui log, l'aggiornamento periodico dei database, etc... | 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 10: | Linea 11: |
| = Usare Cron = | = Creare e modifica un crontab personalizzato = |
| Linea 12: | Linea 13: |
| == Creare il proprio crontab == Come abbiamo visto, il sistema ha un suo file di cron (/etc/crontab), ma ogni utente può creare il proprio (anche su sistemi monoutente è una scelta consigliabile !). Per creare un file di cron, digitare da terminale: |
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 18: | Linea 15: |
| nomeutente@nomesistema:~$ crontab -e | crontab -e |
| Linea 21: | Linea 18: |
| '''Nota''' - il comando deve essere eseguito '''dall'utente per il quale''' il file viene creato, per maggiori informazioni sulla sintassi di crontab nel terminale, digitate solo "crontab" oppure "man crontab". | Il precedente comando apre un [: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 23: | Linea 20: |
| Il comando che abbiamo inserito apre un editor di testo predefinito con un documento vuoto (di solito [:NanoGuida:Nano]), è sufficiente scrivere i comandi necessari (vedi in seguito) e salvare il file con il nome e la collocazione che vengono suggeriti dall'editor (di solito in /tmp). Se la sintassi dei comandi non è corretta, il sistema non riconosce il file, quindi restituisce un messaggio di errore e non utilizza quel crontab. Per vedere se il sistema ha salvato correttamente il file cron, digitare: |
Una volta chiuso l'editor, il nuovo file di '''crontab''' verrà salvato in `/var/spool/cron/crontabs`. |
| Linea 26: | Linea 22: |
| ||<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 30: | Linea 29: |
| che restituirà l'elenco dei cron registrati per l'utente attivo, in assenza di cron validi, restituirà: |
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 36: | Linea 34: |
| == Contenuto del crontab - sintassi == | = Esempi di sintassi dei comandi = |
| Linea 38: | Linea 36: |
| Il file crontab deve rispettare una sintassi ben precisa, diversamente il sistema non accetterà le impostazioni. Questo è un esempio tipico di sintassi di crontab: |
Il file '''crontab''' deve rispettare una sintassi ben precisa, diversamente il sistema non accetterà le impostazioni. Quello che segue è un esempio generico: |
| Linea 45: | Linea 41: |
| 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). | 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). |
| Linea 47: | Linea 43: |
| La prima parte della voce descrive quando l'azione deve essere effettuata. Ci sono cinque campi ("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): *minuto 0-59 (m), *ora 0-23 (h), *giorno del mese 1-31 (dom), *mese 1_12 (mon), *giorno della settimana 0-6 (n.b. la domenica è 0)(dow). |
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»). |
| Linea 54: | Linea 50: |
| 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). Per esempio, questo è il contenuto di un tipico crontab di sistema: |
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: |
| Linea 64: | Linea 59: |
| Nota anche che l'asterisco (*), chiamato WILDCARD, che consente di non specificare alcun valore per il campo in oggetto. | L'asterisco «*» consente di non specificare alcun valore per il campo in cui viene inserito. |
| Linea 66: | Linea 61: |
| Ecco altri esempi che chiariscono l'uso della sintassi: | Quello che segue è un esempio utile a chiarire l'uso della sintassi: |
| Linea 68: | Linea 63: |
| 12 03 * * 1,4 /percorso/assoluto/per/la/webroot/cgibin/script.cgi }}} 12: minuti [0-59] 03: ore [0-23] *: giorno del mese [1-31] *: mese [1-12] 1,4: giorno della settimana [0-6, con la domenica indicata da 0] /script.cgi: comando [lo script da eseguire] Traduzione: alle 3:12a.m., orario del server, ogni lunedì e giovedì, lo script script.cgi verrà eseguito. Alcune variazioni sul tema * tutte le mattine, più o meno alle 3?> 12 03 * * * * tutti i 15 del mese, alla stessa ora?> 12 03 15 * * * 7 volte l'anno, alla stessa ora?> 12 03 31 * * [solo 7 mesi hanno 31 giorni] * ogni domenica, a mezzogiorno?> 0 12 * * 0 * ogni giorno, più o meno a mezzanotte?> 2 0 * * * * ogni lunedì e venerdì, alle 3 del mattino circa?> 02 03 * * 1,5 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: {{{ */5 9-17 * * mon,tue,wed,thur,fri wall "Siamo ancora qui?" |
12 03 * * 1,4 /percorso/script.cgi |
| Linea 92: | Linea 66: |
| o ricordarti un compleanno alle 9 di mattina il 10 gennaio ogni anno: | 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;. |
| Linea 94: | Linea 74: |
| {{{ 0 9 10 jan * echo "E' il compleanno di tua madre oggi!" > ~/readme }}} |
Una volta impostata tale pianificazione, ogni lunedì e giovedì, alle ore 3:12, verrà eseguito il comando '''/percorso/comando'''. |
| Linea 98: | Linea 76: |
| == Gestione dei crontabs == | Quelle che seguono sono alcune varianti della precedente pianificazione d'esempio: |
| Linea 100: | Linea 78: |
| Naturalmente è possibile vedere quali crontab sono in esecuzione sul sistema, è sufficiente usare il comando: | ||<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 || |
| Linea 102: | Linea 86: |
| Seguono sono ulteriori esempi: * {{{ */5 9-17 * * mon,tue,wed,thur,fri wall "Siamo ancora qui?" }}} Stampa un messaggio ogni 5 minuti, durante il tutto giorno. * {{{ 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: |
|
| Linea 106: | Linea 101: |
| == Modifica dei crontabs == | = Crontab per comandi root = |
| Linea 108: | Linea 103: |
| Per modificare il file, digitare di nuovo: {{{ crontab -e }}} 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. == Crontab per comandi root == 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 un livello più alto di permessi, imposta un file di crontab per root usando: |
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 [:Sudo:privilegi di amministrazione] è possibile creare un file di '''crontab''' per l'utente '''root''' con il seguente comando: |
| Linea 124: | Linea 108: |
| 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 130: | Linea 113: |
| == Crontab per eseguire backup di dati == | = Eseguire backup periodici = |
| Linea 132: | Linea 115: |
| Uno degli utilizzi più frequenti, ed utili, del comando cron riguardano l'esecuzione periodica del backup dei dati. In questo esempio cron eseguirà un backup giornaliero, alle ore 19:30, della cartella "documenti", e delle sue sottocartelle, creando un file di archivio dal nome "backup_utente.tgz". |
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 138: | Linea 120: |
| Questo è solo un esempio delle potenzialità di questo comando. Per maggiori informazioni sul backup dei dati con '''tar''' consulta questa [:BackupDelSistema/BackupConTar:guida]. | = Verificare le impostazioni = |
| Linea 140: | Linea 122: |
| = Considerazioni finali = 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: |
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 148: | Linea 127: |
| 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. | = Ulteriori risorse = |
| Linea 150: | Linea 129: |
| = Ulteriori risorse = | |
| Linea 152: | Linea 130: |
| * [http://man.linuxquestions.org/index.php?section=0&type=2&print=1&query=cron&sourceid=mozilla-search Pagina man di cron] * [:BackupDelSistema/BackupConTar:Guida al backup con tar] |
|
| Linea 153: | Linea 133: |
| CategoryAmministrazione CategoryDaRevisionare | CategoryAmministrazione |
IndiceBRTableOfContents |
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 [: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.
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,thur,fri wall "Siamo ancora qui?"
Stampa un messaggio ogni 5 minuti, durante il tutto giorno.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 [: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
- [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]
[:BackupDelSistema/BackupConTar:Guida al backup con tar]
