16.3. crontab: analizzare o modificare il file crontab

crontab è un comando che vi permette di eseguire dei comandi a intervalli di tempo regolari, con il vantaggio che di non dovere essere necessariamente collegati al sistema, e che il risultato dei comandi vi viene spedito via email. Potete indicare l'intervallo di tempo in minuti, giorni e anche mesi. In base alle opzioni utilizzate, crontab si comporterà in diversi modi:

  1. -l: Stampa il vostro file crontab attuale.

  2. -e: Modifica il vostro file crontab.

  3. -r: Elimina il vostro file crontab attuale.

  4. -u <utente>: Applica una delle opzioni di cui sopra all'utente <utente>. Solo root può farlo.

Iniziamo modificando un file crontab. Se scrivete crontab -e, se avete impostato le variabili d'ambiente EDITOR o VISUAL vi troverete di fronte al vostro editor di testi preferito, altrimenti sarà utilizzato VI. Una riga del file crontab è composta da sei campi. I primi cinque campi sono gli intervalli di tempo in minuti, ore, giorni del mese, mesi e giorni della settimana. Il sesto campo è il comando che deve essere eseguito. Le righe che iniziano con un # sono considerate come commenti e saranno ignorate da crond (il programma che si occupa dell'esecuzione dei file crontab). Ecco un esempio di crontab:

Nota

per poterlo stampare con un carattere leggibile abbiamo dovuto spezzare le righe più lunghe in più parti; pertanto, alcune parti devono essere digitate su una sola riga. Quando una riga termina con il carattere \, significa che quella riga continua sotto. Questa convenzione è valida anche nei file Makefile, nella shell e in altre situazioni.

# Se non volete ricevere posta, rimuovete il segno 
#   di commento (#) che precede la riga seguente
#MAILTO=""
#
# Ogni due 2 giorni, alle 14.00 in punto, fammi un rapporto in merito
#   a nuove immagini partendo dall'esempio qui sopra - dopo di che,
#   "ritocca" il file "stamp". Il carattere "%" viene trattato come un 
#   comando 'a capo', questo vi permette di inserire più 
#   comandi sulla stessa linea.
0 14 */2 * *  find /shared/images              \
  -cnewer /shared/images/stamp                 \
  -a -iregex ".*\.jpe?g"                       \
  -a -not -regex                               \
    ".*/old/.*"%touch /shared/images/stamp
#
# Suona questa musica ogni volta che è Natale :)
0 0 25 12 * mpg123 $HOME/sounds/merryxmas.mp3
#
# Ogni martedì alle 17.00 stampa la lista della spesa...
0 17 * * 2 lpr $HOME/shopping-list.txt

Ci sono parecchi modi per specificare gli intervalli, oltre a quelli mostrati in questo caso. Ad esempio, potete indicare un insieme di valori discreti separati da virgole (1,14,23) o una gamma di valori (1-15), o anche combinare le due cose insieme (1-10,12-20), specificando eventualmente un passo (1-12,20-27/2). Ora tocca a voi trovare dei comandi utili da inserire in questo file :-).


Tux on Star from MandrakeSoft Linux è un trademark registrato di Linus Torvalds. Tutti gli altri copyright e trademark appartengono ai rispettivi proprietari.
A meno che non sia specificato diversamente, tutto il contenuto di queste pagine e tutte le immagini sono Copyright MandrakeSoft S.A. e MandrakeSoft Inc. 2000.
http://www.linux-mandrake.com/