Se sei un utente Linux, probabilmente hai già sentito parlare di crontab. È uno strumento potente e fondamentale per automatizzare compiti ripetitivi, senza doverli eseguire manualmente ogni volta. In questa guida vediamo cos'è, come funziona e come usarlo al meglio.
Cos'è crontab?
crontab è l'acronimo di "cron table" (tabella cron). È un comando che permette di pianificare l'esecuzione automatica di comandi o script a intervalli regolari (ogni minuto, ora, giorno, settimana, mese, anno).
Il programma che gestisce queste pianificazioni si chiama crond (cron daemon), che gira in background e controlla costantemente la tabella di pianificazione (crontab) per vedere se ci sono compiti da eseguire.
È perfetto per attività come:
- Backup automatici dei file.
- Pulizia della cache o di cartelle temporanee.
- Aggiornamento del sistema.
- Invio di email di notifica.
- Esecuzione di script personalizzati.
Come funziona crontab?
Ogni utente ha la propria tabella cron, gestita dal comando crontab. La sintassi di una riga nella tabella è:
Dove ogni campo rappresenta:
- MINUTE: Minuti (0-59)
- HOUR: Ore (0-23)
- DAY_OF_MONTH: Giorno del mese (1-31)
- MONTH: Mese (1-12)
- DAY_OF_WEEK: Giorno della settimana (0-6, dove 0 = domenica)
- COMMAND: Il comando da eseguire
Si possono usare anche asterischi (*) per indicare "ogni", numeri separati da virgole per elencare valori, range (es. 1-5) o passi (es. /5 per ogni 5 unità).
Accedere e modificare la tabella crontab
Per visualizzare la tua tabella cron (come utente corrente), usa:
Per editare la tua tabella cron, usa:
Questo aprirà l'editor di testo predefinito (solitamente vi o nano). Aggiungi le tue righe di pianificazione e salva.
export EDITOR=nano prima di eseguire crontab -e.
Se devi eseguire comandi che richiedono i privilegi di amministratore (ad esempio aggiornamenti di sistema), devi modificare la tabella di root con sudo crontab -e. Fai attenzione: i cron job di root hanno pieno accesso al sistema.
Alcuni esempi pratici
1. Eseguire un backup giornaliero alle 2:00 AM
Supponiamo di voler fare un backup della cartella /home/utente/documenti ogni giorno alle 2:00 AM:
Spiegazione: 0 2 * * * significa "ogni giorno alle 2:00". Il comando crea un archivio compresso con la data nel nome.
% deve essere preceduto da una barra rovesciata (\%) perché altrimenti viene interpretato come un ritorno a capo.
2. Pulire una cartella temporanea ogni lunedì alle 3:00 AM
Per rimuovere file più vecchi di 7 giorni da una cartella temporanea:
Questo è molto più sicuro rispetto alla cancellazione diretta dei log di sistema, che potrebbe causare malfunzionamenti.
3. Aggiornare il sistema ogni domenica alle 4:00 AM
Per mantenere il sistema aggiornato automaticamente (richiede privilegi di root):
sudo crontab -e). L'aggiornamento potrebbe richiedere un riavvio. Assicurati che il sistema non sia in uso durante l'esecuzione.
4. Invia una mail di notifica ogni giorno alle 9:00 AM
Per ricevere una notifica quotidiana:
Assicurati che un servizio di posta (come postfix o ssmtp) sia installato e configurato correttamente.
Comandi utili
- Visualizza la tabella cron dell’utente corrente:
crontab -l - Modifica la tabella cron dell’utente corrente:
crontab -e - Rimuovi la tabella cron dell’utente corrente:
crontab -r - Modifica la tabella cron di root:
sudo crontab -e
Consigli finali
Usare crontab è un modo eccellente per rendere il tuo sistema più efficiente. Tuttavia, ricorda di:
- Testare sempre i comandi manualmente prima di inserirli in cron.
- Usare percorsi assoluti per comandi e script (es.
/bin/tar,/usr/bin/python3), perché l’ambiente di cron ha una variabilePATHmolto limitata. - Redirigere l’output e gli errori verso un file di log per il debug:
0 2 * * * /backup/script.sh >> /var/log/backup.log 2>&1 - Evitare di pianificare compiti pesanti durante le ore di punta.
- Non cancellare manualmente i log di sistema: usa
logrotateper la rotazione sicura.
Con un po' di pratica, crontab diventerà un tuo alleato prezioso per mantenere il sistema ordinato e automatizzato!
Pc Facile !