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 21 e 36 (in 15 versioni)
Versione 21 del 22/10/2007 16.04.34
Dimensione: 6809
Commento:
Versione 36 del 23/11/2023 02.08.35
Dimensione: 8727
Autore: jeremie2
Commento: Tabelle: rimozione vecchi colori standard
Le cancellazioni sono segnalate in questo modo. Le aggiunte sono segnalate in questo modo.
Linea 2: Linea 2:
##docs intrepid
Linea 4: Linea 5:
[[BR]]
||<tablestyle="float:right; font-size: 0.9em; width:35%; background:#F1F1ED; margin: 0 0 1em 1em;" style="padding:0.5em;">'''Indice'''[[BR]][[TableOfContents]]||
<<Indice(depth=1)>>
<<Informazioni(forum="http://forum.ubuntu-it.org/viewtopic.php?f=46&t=132669&p=875872"; rilasci="22.04 20.04 19.10 18.04 16.04")>>
Linea 11: Linea 12:
= Creare e modifica un crontab personalizzato =  * Per consultare il manuale di '''cron''' digitare il seguente comando nel [[AmministrazioneSistema/Terminale|terminale]]: {{{
 man cron
}}}
 * Per la sintassi del file '''crontab''' digitare:{{{
 man 5 crontab
}}}
Linea 13: Linea 19:
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:
{{{
= Creare e modificare 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 nel [[AmministrazioneSistema/Terminale|terminale]] il seguente comando:{{{
Linea 18: Linea 25:
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. 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 22: Linea 29:
||<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'''. || {{{#!wiki note
I file di '''crontab''' possono essere modificati solo con il comando '''crontab -e'''.
}}}
Linea 24: Linea 33:
Per vedere se il sistema ha salvato correttamente il proprio file di '''cron''', digitare il seguente comando:
{{{
Per vedere se il sistema ha salvato correttamente il proprio file di '''cron''', digitare il seguente comando:{{{
Linea 29: Linea 37:
Verrà stampato l'elenco dei '''crontab''' registrati per l'utente corrente; in assenza di file di '''cron''' validi il risultato sarà simile al seguente:  {{{ 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 34: Linea 41:
= Esempi di sintassi dei comandi = = Sintassi dei comandi =
Linea 36: Linea 43:
Il file '''crontab''' deve rispettare una sintassi ben precisa, diversamente il sistema non accetterà le impostazioni. Quello che segue è un esempio generico:
{{{
Il file '''crontab''' deve rispettare una sintassi ben precisa, diversamente il sistema non accetterà le impostazioni. Quello che segue è un esempio generico:{{{
Linea 44: Linea 50:
 * 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»).
 * 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 50: Linea 56:
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: 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 (`/etc/crontab`):
Linea 52: Linea 58:
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
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
Linea 59: Linea 65:
L'asterisco «*» consente di non specificare alcun valore per il campo in cui viene inserito.
L'asterisco «*» consente di non specificare alcun valore per il campo in cui viene inserito.<<BR>>
Il parametro '''user''' (che indica con quale utente va eseguito il comando) è presente solo nella '''crontab''' di sistema, manca nella '''crontab''' utente e in quella di root.<<BR>>
Linea 71: Linea 77:
 * '''1,4''': giorni della settimana, separati da una virgola (il lunedì e il giovedì);
 * `/percorso/comando`: comando da eseguire;.
 * '''1,4''': giorni della settimana, separati da una virgola (il Lunedì e il Giovedì);
 * '''/percorso/comando''': comando da eseguire;.
Linea 74: Linea 80:
Una volta impostata tale pianificazione, ogni lunedì e giovedì, alle ore 3:12, verrà eseguito il comando '''/percorso/comando'''.
Una volta impostata tale pianificazione, ogni Lunedì e Giovedì, alle ore 3:12, verrà eseguito il comando '''/percorso/comando'''.<<BR>>
Linea 78: Linea 83:
||<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 ||
||<:>'''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 ||
Linea 86: Linea 91:
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.
 * {{{
Seguono ulteriori esempi:
 * stampare un messaggio ogni 5 minuti, dalle 9 alle 17 da Lunedì a Venerdì:{{{
*/5 9-17 * * mon,tue,wed,thu,fri wall "Siamo ancora qui?"
}}}
 * ricordare un compleanno alle 9 di mattina del 10 Gennaio di ogni anno:{{{
Linea 92: Linea 97:
}}} Ricorda un compleanno alle 9 di mattina del 10 gennaio di ogni anno. }}}

== Stringhe speciali ==

Grazie ad alcune stringhe speciali è possibile in certi casi semplificare la sintassi dei comandi visti in precedenza, semplicemente sostituendo il carattere speciale ai cinque valori. Vengono qui riportati alcuni esempi:

||<:>'''Stringa''' ||<:>'''Eseguire comando:''' ||
||'''@reboot''' || una volta all'avvio ||
||'''@yearly''' || una volta all'anno (0 0 1 1 *) ||
||'''@annually''' || ..come @yearly ||
||'''@monthly''' || una volta al mese (0 0 1 * *) ||
||'''@weekly''' || una volta alla settimana (0 0 * * 0) ||
||'''@daily''' || una volta al giorno (0 0 * * *) ||
||'''@midnight''' || ..come @daily ||
||'''@hourly''' || una volta all'ora (0 * * * *) ||

{{{#!wiki note
'''@reboot''' viene eseguito dopo la partenza del daemon cron, dunque in realtà qualche secondo '''dopo''' il reboot.
}}}
Linea 96: Linea 119:
Per vedere quali '''crontab''' sono in esecuzione sul sistema è sufficiente digitare il seguente comando:
{{{
Per vedere quali '''crontab''' utente sono in esecuzione sul sistema è sufficiente digitare il seguente comando:{{{
Linea 99: Linea 121:
}}}

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''':{{{
PATH=/usr/sbin:/usr/bin:/sbin:/bin
Linea 103: Linea 129:
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/PrivilegiDiAmministrazione/Sudo|privilegi di amministrazione]] è possibile creare un file di '''crontab''' per l'utente '''root''' con il seguente comando:{{{
Linea 108: Linea 133:
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: Il formato delle righe nella nella '''crontab''' di '''root''' è uguale a quello della '''crontab''' utente.
Qui sotto un esempio di una riga inserita nella '''crontab''' di '''root''' perchè deve agire su un file di sistema.
Linea 110: Linea 136:
PATH=/usr/sbin:/usr/bin:/sbin:/bin
}}}
@reboot echo "disable" > /sys/firmware/acpi/interrupts/gpe03
}}} A ogni reboot disabilita l'interrupt gpe03.

Anche i comandi nella crontab di sistema `/etc/crontab` vengono eseguiti per tutti gli utenti ma non conviene modificarla perché le modifiche potrebbero andare perse per un aggiornamento di sistema.
Linea 115: Linea 143:
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`. 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 117: Linea 145:
30 19 * * * tar -cvpzf /backup_utente.tgz /home/utente/documenti 30 19 * * * tar -cvpzf /backup_utente.tgz /home/utente/Documenti
Linea 122: Linea 150:
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:
{{{
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 127: Linea 154:
I comandi eseguiti da '''cron''' vengono riportati in '''/var/log/syslog''' dunque si possono verificare con '''journalctl'''.
Linea 129: Linea 158:
 * [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]
 * [[Ubuntu:CronHowto|Documento originale]]
 * [[AmministrazioneSistema/BackupDelSistema/BackupConTar|Guida al backup con tar]]

Guida verificata con Ubuntu: 20.04 22.04

Problemi in questa pagina? Segnalali in questa discussione

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 digitare il seguente comando nel terminale:

     man cron
  • Per la sintassi del file crontab digitare:

     man 5 crontab

Creare e modificare 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 nel terminale il seguente comando:

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

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 (/etc/crontab):

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.
Il parametro user (che indica con quale utente va eseguito il comando) è presente solo nella crontab di sistema, manca nella crontab utente e in quella di root.
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 ulteriori esempi:

  • stampare un messaggio ogni 5 minuti, dalle 9 alle 17 da Lunedì a Venerdì:

    */5 9-17 * * mon,tue,wed,thu,fri wall "Siamo ancora qui?"
  • ricordare un compleanno alle 9 di mattina del 10 Gennaio di ogni anno:

    0 9 10 jan * echo "È il compleanno di tua madre oggi!" > ~/readme

Stringhe speciali

Grazie ad alcune stringhe speciali è possibile in certi casi semplificare la sintassi dei comandi visti in precedenza, semplicemente sostituendo il carattere speciale ai cinque valori. Vengono qui riportati alcuni esempi:

Stringa

Eseguire comando:

@reboot

una volta all'avvio

@yearly

una volta all'anno (0 0 1 1 *)

@annually

..come @yearly

@monthly

una volta al mese (0 0 1 * *)

@weekly

una volta alla settimana (0 0 * * 0)

@daily

una volta al giorno (0 0 * * *)

@midnight

..come @daily

@hourly

una volta all'ora (0 * * * *)

@reboot viene eseguito dopo la partenza del daemon cron, dunque in realtà qualche secondo dopo il reboot.

Gestione dei crontab

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

crontab -l

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:

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

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

Il formato delle righe nella nella crontab di root è uguale a quello della crontab utente. Qui sotto un esempio di una riga inserita nella crontab di root perchè deve agire su un file di sistema.

@reboot echo "disable" > /sys/firmware/acpi/interrupts/gpe03

A ogni reboot disabilita l'interrupt gpe03.

Anche i comandi nella crontab di sistema /etc/crontab vengono eseguiti per tutti gli utenti ma non conviene modificarla perché le modifiche potrebbero andare perse per un aggiornamento di sistema.

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

I comandi eseguiti da cron vengono riportati in /var/log/syslog dunque si possono verificare con journalctl.

Ulteriori risorse


CategoryAmministrazione