Linux – Cron job con crontab

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.

Come si registra un cron job?

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

3 thoughts on “Linux – Cron job con crontab”

Comments are closed.