crontab è un comando che vi permette di eseguire dei comandi a intervalli di tempo regolari, con il vantaggio di non dover essere necessariamente collegati al sistema, e di poter ricevere il risultato dei comandi via e-mail. Potete indicare l'intervallo di tempo in minuti, ore, giorni e anche mesi. In base alle opzioni utilizzate, crontab si comporterà in diversi modi:
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:
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, fate precedere la
# riga seguente dal segno di commento (#)
#MAILTO=""
#
# Ogni due 2 giorni, alle 14.00 in punto, fa un elenco delle
# nuove immagini come nell'esempio precedente - dopo di che
# "ritocca" il file "stamp". Il carattere "%" viene considerato
# come un ritorno 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 una musica ogni volta che è Natale :)
0 0 25 12 * mpg123 $HOME/musica/buon-natale.mp3
#
# Ogni martedì alle 17.00 stampa la lista della spesa...
0 17 * * 2 lpr $HOME/lista-della-spesa.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 un intervallo 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!