Immagina di voler eseguire un backup automatico ogni notte alle 2:00, aggiornare il sistema ogni domenica mattina o controllare lo spazio su disco ogni ora. Farlo manualmente sarebbe noioso e soggetto a errori. In Linux, esiste uno strumento standard per questo: cron. Cron è un demone (servizio in background) che permette di pianificare l'esecuzione automatica di script o comandi in base a una pianificazione definita. In questa guida, imparerai come funziona cron, come leggere e scrivere la sua tabella di pianificazione (crontab) e come usarlo in modo efficace e sicuro.
1. Cos'è cron?
Cron è un servizio di pianificazione dei compiti presente in quasi tutti i sistemi Unix-like, inclusi Linux e macOS. Ogni utente del sistema può avere la propria tabella di pianificazione (crontab), dove specifica quando e cosa eseguire. Il demone cron controlla periodicamente queste tabelle e, quando un'ora pianificata coincide con l'ora attuale, esegue il comando associato.
2. Cos'è la crontab?
La crontab (CRON TABle) è un file di testo che contiene una lista di comandi pianificati. Ogni riga della crontab rappresenta un compito e segue un formato specifico per definire la pianificazione.
3. Come leggere e scrivere una voce di crontab
Il formato di base per una voce in crontab è:
Puoi usare i seguenti caratteri speciali:
*: Indica "ogni valore possibile". Ad esempio,*per il minuto significa "ogni minuto".,: Separatore di valori. Ad esempio,1,10,15per l'ora significa "alle ore 1, 10 e 15".-: Indica un intervallo. Ad esempio,1-5per il giorno della settimana significa "da lunedì a venerdì"./: Indica passi. Ad esempio,*/2per l'ora significa "ogni 2 ore".
Esempi di pianificazioni comuni:
- Ogni minuto:
* * * * * comando - Ogni 5 minuti:
*/5 * * * * comando - Ogni ora:
0 * * * * comando - Tutte le 2 ore:
0 */2 * * * comando - Tutte le notti alle 2:30:
30 2 * * * comando - Ogni domenica alle 3:00 AM:
0 3 * * 0 comando - Ogni primo del mese alle 6:00 AM:
0 6 1 * * comando - Ogni giorno lavorativo (lun-ven) alle 18:00:
0 18 * * 1-5 comando
4. Come gestire la propria crontab
Per modificare la tua crontab personale, usa il comando:
Questo aprirà la tua crontab in un editor di testo (solitamente vi, nano o quello definito dalla variabile d'ambiente EDITOR).
Per visualizzare la tua crontab attuale:
Per rimuovere tutti i compiti dalla tua crontab (attenzione!):
5. Esempi pratici di utilizzo
Ecco alcuni esempi concreti di come puoi usare cron:
1. Eseguire uno script di backup quotidiano
Supponi di avere uno script di backup in /home/utente/scripts/backup.sh che desideri eseguire ogni giorno alle 2:00 AM.
Aggiungi questa riga alla tua crontab (crontab -e):
Assicurati che lo script sia eseguibile:
2. Aggiornare il sistema ogni domenica
Su un sistema Ubuntu/Debian, potresti voler aggiornare i pacchetti automaticamente la domenica mattina.
Attenzione: L'esecuzione di comandi con sudo in cron può richiedere configurazioni aggiuntive (es. NOPASSWD nel file /etc/sudoers) o l'esecuzione dello script come root.
3. Controllare lo spazio su disco ogni ora
Per inviare un'email se lo spazio su disco supera una certa soglia, puoi creare uno script apposito e pianificarlo.
6. Considerazioni importanti
- Percorsi assoluti: Quando si eseguono comandi o script in cron, l'ambiente è minimo. È buona pratica usare percorsi assoluti per tutti gli eseguibili e per i file. Ad esempio, usa
/usr/bin/python3invece dipython3. - Variabili d'ambiente: Le variabili d'ambiente impostate nel tuo profilo shell (come
PATH) potrebbero non essere disponibili in cron. Puoi definirle all'inizio della crontab:
- Output e log: L'output standard e gli errori di un comando cron vengono solitamente inviati via email all'utente proprietario della crontab (se un MTA è configurato). Puoi redirigere l'output verso un file di log per monitorare l'esecuzione:
Questo comando appenderà l'output e gli errori dello script a /home/utente/logs/backup.log.
7. Crontab di sistema
Oltre alle crontab personali, esistono file di pianificazione globali situati in /etc/crontab e nelle directory /etc/cron.d/, /etc/cron.daily/, /etc/cron.weekly/, /etc/cron.monthly/. Questi sono usati per compiti di sistema e vengono eseguiti come root (o come specificato nel file). La modifica di questi file richiede i privilegi di amministratore.
Automatizzare i compiti con cron è un'abilità fondamentale per chiunque utilizzi Linux in modo regolare o professionale. Ti permette di risparmiare tempo, rendere i processi ripetitivi affidabili e mantenere il tuo sistema in ordine senza intervento manuale costante.
Pc Facile !