Il programma crontab fa parte delle utility di Unix (GNU/Linux compreso); crontab si occupa di eseguire dei comandi (detti cron job o cronjob) in un preciso istante specificato dall’utente. Un demone, crond, sta in esecuzione sul computer e controlla ogni minuto se c’è un compito da svolgere che è stato pianificato per quel momento.
Quindi crontab serve per indicare al demone quando e quale comando eseguire.
Come si fa a pianificare l’esecuzione di un cron job?
Per preparare l’esecuzione periodica di un cronjob è necessario inserire in un file crontab una riga che specifici, usando una particolare sintassi, cosa svolgere e quando.
Un file crontab contiene alcune righe, tante quante sono i cronjob pianificati, con una struttura simile:
Gli asterischi rappresentano le posizioni dove indicare i valori per i minuti, l’ora, il giorno del mese, il mese, il giorno della settimana nel quale il comando verrà eseguito. Per impostare i valori si può usare la sintassi qui descritta:
- L’operatore virgola (‘,’) specifica una elenco di numeri, ad esempio: “1,3,4,7,8″.
- L’operatore trattino (‘-’) indica un intervallo di valori, ad esempio: “1-6″, che equivale a “1,2,3,4,5,6″.
- L’operatore asterisco (‘*’) specifica tutti i possibili valori di un campo. Un asterisco nel campo dell’ora è equivalente a “ogni ora”.
Esiste anche un operatore supportato da alcune versioni estese del demone, l’operatore slash (‘/’), che può essere usato per saltare un certo numero di valori.
Ad esempio, “*/4″ nel campo dell’ora equivale a “0,4,8,12,16,20″; l’operatore “*” specifica “ogni ora”, ma il “/4″ indica che solo il primo, quarto, settimo e così via dei valori restituiti da “*” vengano usati, in quanto esegue solamente i multipli di 4 (o meglio quei valori che con la divisione per interi restituiscono resto pari a zero).
I valori ammissibili delle posizioni sono:
- Da 0 a 59 per i minuti
- Da 0 a 23 per le ore
- Da 1 a 31 per i giorni del mese
- Da 1 a 12 per i mesi dell’anno
- Da 0 a 6 per i giorni della settimana, dove 0 è domenica e 6 rappresenta il sabato.
Esempi d’uso
08 03 * * * rm -r /home/mee/temporaries/
Alle 3.18 (di notte) di ogni giorno svuota il contenuto della cartella temporaries che si trova nella home dell’utente mee.
58 5 * * 1 touch /home/mee/log_$(date +%Y%m%d).txt
Crea un file con nome log seguito dalla data ogni lunedì mattina a due minuti alle sei. Attenzione se si usa un comando che fa uso di % è necessario anteporre al carattere la barra ‘’.
*/20 8-17 * * 1-5 freshclam
Esegue il cron job freshclam (ricerca delle definizioni dell’antivirus ClamAV) ogni venti minuti tutti i giorni lavorativi dalle otto di mattina fino alle cinque del pomeriggio.
Per svolgere un cronjob ogni 2 ore:
* */2 * * * cp /home/mee/dati.img /bk/ 0 15 4,5 6 0 mv pippo pluto
Il comando verrà eseguito alle 15.00 del 4 e 5 giugno ma anche ogni domenica di giugno in quanto il terzo e il quarto parametro vengono valutati veri quando almeno una dei due valori è vera; perciò sia quando è vera la prima condizione sia quando è vera l’altra il cron job è eseguito.
Per mettere un cron job in attesa di esecuzione si può creare un file con all’interno le righe con i cronjob da svolgere e “inviarli” al crontab.
crontab /home/mee/cronjobs.ct
Indica di pianificare i comandi inseriti nel file di testo cronjobs.ct, posto nella home dell’utente.
crontab -r
Col comando sopra vengono rimossi tutti i cronjob impostati con il comando crontab. Mentre con il comando crontab -l sono elencati i cron job programmati e il file di crontab.
Inserendo [email protected], prima di una voce nel file di crontab personalizzato si può ricevere un messaggio di posta elettronica se ci sono dei problemi con l’attivazione del cronjob che segue l’indirizzo e-mail.
SOURCE | LINK | LANGUAGE | ITALIAN |
Perche non:)
Much appreciated for the information and share!
Questa è l’informazione esatta che sto cercando , grazie! Arron