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:
-l: Stampa il vostro file crontab attuale.
-e: Modifica il vostro file crontab.
-r: Elimina il vostro file crontab attuale.
-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:
![]() | 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 :-).
Indietro | Partenza | Avanti |
find: cerca file in base a determinati criteri | Risali | at: programmare un comando, ma per una sola volta |