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 $
# 1
#
SHELL=/bin/sh
PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin 2
HOME=/var/log
#
#
#minute    hour    mday    month   wday    who command 3
#
#
*/5    *   *   *   *   root    /usr/libexec/atrun 4

1

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.

2

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.

3

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.

4

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.

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>.