Schedulazione di un comando

Schedulazione con crontab

Il comando crontab permette di schedulare l’esecuzione di un comando, lanciando:

crontab -l

viene visualizzato l’elenco dei comandi schedulati. Per editare le schedulazioni assicurarsi in primo luogo che la variabile d’ambiente EDITOR sia settata con l’editor preferito:

export EDITOR=vi

e quindi eseguire:

crontab -e

Il formato della stringa da editare è:

.---------------- minuto (0 - 59) 
|  .------------- ora (0 - 23)
|  |  .---------- giorno del mese (1 - 31)
|  |  |  .------- mese (1 - 12)  
|  |  |  |  .---- giorno della settimana (0 - 6) (domenica=0 o 7)
|  |  |  |  |     

*  *  *  *  *  comando da eseguire


È possibile usare anche la wildcard “*” o indicare un intervallo o una lista. Il simbolo “*” sta ad indicare un qualunque valore, il simbolo “-” viene usato per definire un intervallo, mentre “,” permette di indicare una lista.

Esempi:

Il comando viene eseguito tutti i giorni dal lunedì al venerdì dalle 8 alle 17.30 ogni 30 minuti

0,30 8-17 * * 1-5 /bin/ls

Il comando viene eseguito il sabato e la domenica allo scoccare di ogni ora

0 * * * 0,6 /bin/ls

Il comando viene eseguito il primo di ogni mese all’una di notte

0 1 1 * * /bin/ls

Schedulazione a settimane alterne

Lancio alle 6 del lunedì mattina a settimane alterne

00 06 * * 1 if test -f /path/di/appoggio/cron.stop; \
then rm /path/di/appoggio/cron.stop; \
else modulo_da_lanciare; \
touch /path/di/appoggio/cron.stop; \
fi

o anche

00 06 * * 1 test -f /path/di/appoggio/cron.stop && \
(rm /path/di/appoggio/cron.stop) || \
(modulo_da_lanciare; touch /path/di/appoggio/cron.stop)

Schedulazione 2 volte al mese

Lancio alle 6 del lunedì mattina il 1° e il 15 di ogni mese

00 06 1,15 * * modulo_da_lanciare