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