|
Dimensione: 3360
Commento:
|
Dimensione: 6978
Commento: sistemata la sintassi e modificare crontab
|
| Le cancellazioni sono segnalate in questo modo. | Le aggiunte sono segnalate in questo modo. |
| Linea 1: | Linea 1: |
| = Cos'è Cron? = | #format wiki #language it [[BR]] ||<tablestyle="float:right; font-size: 0.9em; width:35%; background:#F1F1ED; margin: 0 0 1em 1em;" style="padding:0.5em;">'''Indice'''[[BR]][[TableOfContents]]|| |
| 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* 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 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 [: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: |
| 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 30: |
| crontab -e | no crontab for nomeutente |
| Linea 31: | Linea 32: |
| 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 33: |
| == Considerationi Supplementari == | = Esempi di sintassi dei comandi = |
| Linea 35: | Linea 35: |
| 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,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 = 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: |
| Linea 39: | Linea 107: |
| Linea 40: | Linea 109: |
| Linea 44: | Linea 114: |
| = Crontab per eseguire backup di dati = 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". {{{ 30 19 * * * tar -cvpzf /backup_utente.tgz /home/utente/documenti }}} Questo è solo un esempio delle potenzialità di questo comando. Per maggiori informazioni sul backup dei dati con '''tar''' consulta questa [:BackupDelSistema/BackupConTar:guida]. = Considerazioni finali = |
|
| Linea 45: | Linea 127: |
| Linea 48: | Linea 131: |
| Linea 50: | Linea 134: |
| = Ulteriori risorse = * [wiki:Ubuntu/CronHowto Documento originale] |
|
| Linea 51: | Linea 137: |
Traduzione: LorenzoSfarra - Documento Originale: wiki:Ubuntu/CronHowTo |
CategoryAmministrazione CategoryDaRevisionare |
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
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:
sudo crontab -e
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:
PATH=/usr/sbin:/usr/bin:/sbin:/bin
Crontab per eseguire backup di dati
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".
30 19 * * * tar -cvpzf /backup_utente.tgz /home/utente/documenti
Questo è solo un esempio delle potenzialità di questo comando. Per maggiori informazioni sul backup dei dati con tar consulta questa [:BackupDelSistema/BackupConTar:guida].
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:
echo "Backup riuscito: $(date)" >> /tmp/mybackup.log
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
- [wiki:Ubuntu/CronHowto Documento originale]
