Automatizzare i Compiti in Linux con Cron

Pubblicato il 22 Ottobre 2025 • Categoria: Linux

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 è:

* * * * * comando_da_eseguire | | | | | | | | | +---- Giorno della settimana (0 - 6) (Domenica=0 o 7) | | | +------ Mese (1 - 12) | | +-------- Giorno del mese (1 - 31) | +---------- Ora (0 - 23) +------------ Minuto (0 - 59)

Puoi usare i seguenti caratteri speciali:

Esempi di pianificazioni comuni:

💡 Consiglio: Usa siti come crontab.guru per aiutarti a scrivere e verificare la sintassi delle espressioni cron.

4. Come gestire la propria crontab

Per modificare la tua crontab personale, usa il comando:

crontab -e

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:

crontab -l

Per rimuovere tutti i compiti dalla tua crontab (attenzione!):

crontab -r
⚠️ ATTENZIONE: Quando modifichi la crontab, assicurati che la sintassi sia corretta. Un errore di battitura potrebbe impedire l'esecuzione di altri compiti. Controlla sempre due volte prima di salvare.

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):

0 2 * * * /home/utente/scripts/backup.sh

Assicurati che lo script sia eseguibile:

chmod +x /home/utente/scripts/backup.sh

2. Aggiornare il sistema ogni domenica

Su un sistema Ubuntu/Debian, potresti voler aggiornare i pacchetti automaticamente la domenica mattina.

0 4 * * 0 sudo apt update && sudo apt upgrade -y

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.

0 * * * * /home/utente/scripts/check_disk_space.sh

6. Considerazioni importanti

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
0 2 * * * /home/utente/scripts/backup.sh >> /home/utente/logs/backup.log 2>&1

Questo comando appenderà l'output e gli errori dello script a /home/utente/logs/backup.log.

  • Sicurezza: Le crontab personali sono accessibili solo dal proprietario. Solo root può modificare le crontab di altri utenti o quelle di sistema. Fai attenzione a cosa pianifichi di eseguire.
  • Test: Prima di pianificare un compito importante, testalo manualmente da terminale per assicurarti che funzioni correttamente.
  • 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.

    Prodotti Consigliati

    Potrebbe interessarti anche...

    Prodotti utili per ottimizzare e mantenere al meglio il tuo sistema.