| Dimensione: 6705 Commento:  | Dimensione: 6722 Commento: converted to 1.6 markup | 
| Le cancellazioni sono segnalate in questo modo. | Le aggiunte sono segnalate in questo modo. | 
| Linea 2: | Linea 2: | 
| ##docs intrepid | |
| Linea 4: | Linea 5: | 
| [[Indice(depth=1)]] | <<Indice(depth=1)>> | 
| Linea 17: | Linea 18: | 
| 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. | 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 21: | 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'''. || | ||<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'''. || | 
| Linea 88: | Linea 89: | 
| }}} Stampa un messaggio ogni 5 minuti, dalle 9 alle 17 e da lunedì a venerdì. | }}} Stampa un messaggio ogni 5 minuti, dalle 9 alle 17 da lunedì a venerdì. | 
| Linea 102: | Linea 103: | 
| 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: | 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 128: | Linea 129: | 
| * [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] | * [[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]] | 
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 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.
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

