Vuoi che il tuo sistema Linux esegua l’aggiornamento in un preciso momento della giornata? Vuoi eseguire il backup dei dati importanti durante la notte? O semplicemente vuoi che il computer si spenga ad una certa ora? Allora devi utilizzare Crond per pianificare le operazioni su Linux.
Crond è lo strumento che nei sistemi Linux permette di eseguire comandi in maniera automatica a determinati orari. E’ possibile pianificare le operazioni su Linux in maniera molto precisa semplicemente configurando il file /etc/crontab con un editor di testo. Al suo interno è possibile impostare l’orario esatto con la precisione in secondi in cui eseguire una singola operazione o un gruppo di operazioni.
Iniziamo a vedere come configurare Crond tramite il suo file di configurazione /etc/crontab, utilizzando come editor testuale nano.
$ sudo nano /etc/crontab
Le operazioni da eseguire vanno inserite una per riga, secondo lo schema
mm hh gg MM GG user comando
- mm: indica il minuto di esecuzione, ed è un valore numerico compreso tra 0 e 59;
- hh: indica l’ora di esecuzione, ed è un valore numero compreso tra 0 e 23;
- gg: indica il giorno di esecuzione, ed è un valore numerico compreso tra 1 e 31;
- MM: indica il mese di esecuzione, ed è un valore numerico compreso tra 1 e 12;
- GG: indica il giorno della settimana in cui verrà eseguito il comando, ed è un valore numerico compreso tra 0 e 6, dove 0 indica la Domenica, 1 il Lunedì fino 6 che indica il Sabato;
- user: l’utente con cui verrà lanciato il comando;
- comando: il comando da eseguire.
Ogni campo può contenere valori multipli separati da una virgola, o intervalli se sono separati da trattino. Il carattere jolly indica “qualsiasi valore”. Per far partire un comando ogni quindicesimo minuto dalle 8 alle 16 (di tutti i giorni, di tutti i mesi) come utente root, dobbiamo scrivere:
15 8-16 * * * root /percorso/comando_da_eseguire
ad ogni modifica del file /etc/crontab dobbiamo farlo ricaricare a crond con il comando
$ sudo /etc/init.d/crond restart
Nei sistemi Debian e quindi anche su Ubuntu sono presenti tre cartelle all’interno delle quali inserire comandi sotto forma di script che crond provvede ad eseguire automaticamente ogni giorno, ogni settimana e ogni mese. All’interno di queste cartelle sono presenti comandi che eseguono operazioni di sistema come ad esempio aggiornare il sistema o compattare i file di log. Le cartelle sono:
/etc/cron.daily
/etc/cron.weekly
/etc/cron.monthly
e al loro interno è possibile inserire i propri script.
Vi propongo un esempio di un file crontab di una scuola dove nel laboratorio viene disattivato il collegamento ad internet ad ogni suono della campanella:
# /etc/crontab: system-wide crontab
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
# m h dom mon dow user command
17 * * * * root run-parts --report /etc/cron.hourly
25 6 * * * root test -x /usr/sbin/anacron || run-parts --report /etc/cron.daily
47 6 * * 7 root test -x /usr/sbin/anacron || run-parts --report /etc/cron.weekly
52 6 1 * * root test -x /usr/sbin/anacron || run-parts --report /etc/cron.monthly
# inizio prima ora
00 08 * * * root /etc/script/squid_spegni
# inizio seconda ora
10 09 * * * root /etc/script/squid_spegni
# inizio terza ora
10 10 * * * root /etc/script/squid_spegni
# inizio quarta ora
05 11 * * * root /etc/script/squid_spegni
# inizio quinta ora
15 12 * * * root /etc/script/squid_spegni
# inizio sesta ora
10 13 * * * root /etc/script/squid_spegni
# inizio pomeriggio
00 14 * * * root /etc/script/squid_accendi
ora potete iniziare a pianificare le operazioni su Linux con Crontab.