11.6. Configurare l'Utility `cron`
Indietro | Capitolo 11. Configurazione e Messa a Punto | Avanti

## 11.6. Configurare l'Utility `cron`

Contributo di Tom Rhodes.

Uno dei comandi più utili presenti in FreeBSD è cron(8). L'utility `cron` viene eseguita in background e controlla costantemente il file `/etc/crontab`. `cron` controlla anche la directory `/var/cron/tabs`, alla ricerca di nuovi file `crontab`. Questi file `crontab` contengono informazioni sulle specifiche funzioni che ci si aspetta vengano compiute da `cron` a determinati intervalli temporali.

L'utility `cron` usa due differenti tipi di file di configurazione, il crontab di sistema ed il crontab utente. La sola differenza fra questi due file è nel sesto campo. Nel crontab di sistema, il sesto campo è il nome dell'utente sotto il quale viene eseguito il comando. Questo dà al crontab di sistema la capacità di eseguire comandi come ogni utente. Nel crontab utente, il sesto campo è il comando da eseguire, e tutti i comandi vengono eseguiti come l'utente che ha creato il crontab; questa è un'importante caratteristica di sicurezza.

### Nota:

I crontab utenti permettono ad utenti individuali di schedulare task senza i privilegi di `root`. I comandi in un crontab utente vengono eseguiti con i permessi dell'utente che posseggono il file crontab.

L'utente `root` può possedere il crontab proprio come ogni altro utente. Qui c'è una differenza rispetto a `/etc/crontab` (il crontab di sistema). Per via del crontab di sistema, di solito non c'è bisogno di creare un crontab per `root`.

Diamo un'occhiata al file `/etc/crontab` (il crontab di sistema):

    # /etc/crontab - il crontab di root per FreeBSD
    #
    # $FreeBSD: src/etc/crontab,v 1.32 2002/11/22 16:13:39 tom Exp $
    #
    #
    SHELL=/bin/sh
    PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin
    HOME=/var/log
    #
    #
    #minute    hour    mday    month   wday    who command
    #
    #
    */5    *   *   *   *   root    /usr/libexec/atrun

| Come in molti file di configurazione di FreeBSD, il carattere `#` rappresenta un commento. Un commento può essere posto nel file come una nota su cosa si desidera fare con un certo comando. I commenti non possono essere nella stessa linea di un comando o saranno interpretati come parte di un comando; devono trovarsi su una linea a sè. Le linee vuote vengono ignorate.
| Anzitutto, deve essere definito l'ambiente. I segni di uguale (`=`) vengono usati per definire ogni impostazione dell'ambiente, come viene fatto in questo esempio per `SHELL`, `PATH`, e `HOME`. Se la linea relativa alla shell viene omessa, `cron` userà quella di default, che è `sh`. Se si omette la variabile `PATH`, non verrà usato nessun default e le locazioni dei file dovranno essere assolute. Se viene omessa `HOME`, `cron` userà la home directory dello user che lo ha richiamato.
| Questa linea definisce un totale di sette campi. Qui sono elencati i valori `minute`, `hour`, `mday`, `month`, `wday`, `who`, e `command`. Questi nomi sono più o meno autoesplicativi. `minute` è il tempo in minuti al quale dovrà essere eseguito il comando. `hour` è uguale, ma per le ore. `mday` rappresenta il giorno del mese. `month` è simile ad `hour` e `minute`, ma rappresenta il mese. L'opzione `wday` rappresenta il giorno della settimana. Tutti questi campi devono avere un valore numerico, e seguire l'orario di ventiquattro ore. Il campo `who` è speciale, ed esiste solo nel file `/etc/crontab`. Questo campo specifica l'utente con il quale deve essere eseguito il comando. Quando un utente installa il suo file `crontab`, non avrà a disposizione questa opzione. Infine, viene elencata l'opzione `command`. Questo è l'ultimo campo, e naturalmente indica il comando che deve essere eseguito.
| Quest'ultima linea definirà i valori discussi prima. Notate che abbiamo un `*/5`, seguito da parecchi caratteri `*`. Questi caratteri `*` significano «dalla prima all'ultima volta», e possono essere interpretati come ogni volta. Dunque, basandosi su questa linea, sembra che il comando `atrun` debba essere invocato da `root` ogni cinque minuti, prescindendo da quale giorno o mese sia. Per maggiori informazioni sul comando `atrun`, vedere la pagina di manuale atrun(8). I comandi possono essere richiamati con qualsiasi numero di flag; i comandi che si estendono per più righe potrebbero però avere bisogno di essere spezzati con il carattere di continuazione «\».

Questa è l'impostazione di base per ogni file `crontab`, anche se c'è qualcosa di particolare in questo. Il sesto campo, dove abbiamo specificato il nome utente, esiste solo nel file di sistema `/etc/crontab`. Questo campo dovrebbe venire omesso nei `crontab` dei vari utenti.

### 11.6.1. Installare un Crontab

### Importante:

Non devi usare la procedura descritta qui per editare/installare il crontab di sistema. Semplicemente usa il tuo editor favorito: l'utility `cron` noterà che il file è cambiato e immediatamente inizierà ad usare la versione aggiornata. Vedi queste FAQ per maggiori informazioni.

Per installare un `crontab` appena scritto, prima usa il tuo editor preferito per creare un file nel formato corretto, e poi usa l'utility `crontab`. L'uso più corretto è:

    % crontab crontab-file

In questo esempio, `crontab-file` è il nome di un file `crontab` che era stato creato in precedenza.

C'è anche un'opzione per elencare i file `crontab` già installati: passate semplicemente `-l` a `crontab` e date un'occhiata all'output.

Per gli utenti che desiderino scrivere il proprio file crontab da zero, senza usare un template, è disponibile `crontab -e`. Questa opzione permetterà loro di invocare l'editor prescelto su un file vuoto. Quando il file verrà salvato, esso verrà automaticamente installato dal comando `crontab`.

Se successivamente vuoi rimuovere il tuo `crontab` completamente, usa `crontab` con l'opzione `-r`.

Indietro | Risali | Avanti
11.5. Avvio dei Servizi | Partenza | 11.7. Usare rc con FreeBSD

Questo, ed altri documenti, possono essere scaricati da ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/

Per domande su FreeBSD, leggi la documentazione prima di contattare <questions@FreeBSD.org>.
Per domande su questa documentazione, invia una e-mail a <doc@FreeBSD.org>.