Vuoi svegliarti alle 2 di notte, svuotare i log, pulire i file temporanei ed eseguire gli stessi compiti di manutenzione del server ogni singolo giorno?
Beh, nemmeno io. Nemmeno i milioni di amministratori di server che gestiscono i più di 14 miliardi di server in tutto il mondo.
Allora, fermiamo questa follia — ti prego!
I Cron Job sono stati creati per questo.
Perché, sinceramente, nulla dice “amministratore di sistema competente” come essere profondamente addormentato e prendersi il merito per il lavoro gestito dai tuoi script. Si chiama “sfruttare le tue risorse.”
Con i Cron Job:
- Il tuo capo pensa che tu sia dedicato.
- Il tuo server sa che sei pigro.
- Hai questa bellissima relazione simbiotica chiamata automazione.
Oggi diventerai un esperto di Cron Job.
Prima, Cos’è un Cron Job? (La Versione Non Noiosa)
Un Cron Job è essenzialmente un programmatore di attività integrato nei sistemi operativi simili a Unix (Linux, macOS) che ti permette di eseguire comandi Linux automaticamente a orari e date specificati.
Pensalo come una lista di cose da fare per il tuo server, ma… questa viene effettivamente completata.
Cron in Metafore
Se la tua infrastruttura server fosse un ristorante:
- Il cron daemon è il responsabile del controllo della programmazione giornaliera.
- Il crontab è il registro delle assegnazioni del personale.
- Ogni Cron Job è un compito assegnato a uno specifico membro dello staff in un momento specifico.
- Il comando è il lavoro effettivo che viene svolto.
Quando l’orologio segna l’ora programmata, il manager dà una pacca sulla spalla all’impiegato assegnato e dice, “È l’ora dello spettacolo!”
L’impiegato esegue il proprio compito senza domande o lamentele.
Se solo noi umani fossimo così affidabili, il mondo sarebbe un posto diverso!
L’Anatomia di un Cron Job
Ogni Cron Job è composto da due parti principali:
- Quando eseguire (il programma)
- Cosa eseguire (il comando o lo script da eseguire)
Il programma utilizza una sintassi specifica che potrebbe sembrare una sorta di magia informatica a prima vista:

Ma osserva più da vicino e inizierà a prendere senso.
Ogni asterisco può essere sostituito con valori specifici, intervalli o periodi per creare esattamente il programma di cui hai bisogno.
Perché Gli Amministratori di Server Amano i Cron Job
C’è un motivo per cui gli amministratori di server (anche io) si commuovono quando parlano di Cron Job.
Trasformano la gestione del server in qualcosa che (almeno lontanamente) ricorda un equilibrio tra lavoro e vita privata.
1. Ti Fanno Risparmiare Tempo
Ricordi il tempo? Quella cosa di cui non hai mai abbastanza? I Cron Job te lo restituiscono. Li imposti, li dimentichi e praticamente non li guardi mai.
(Beh, fino a quando non si rompono o devi cambiare il programma.)
2. Mantengono La Coerenza
Gli esseri umani sono inconsistenti. Dimentichiamo le cose. Facciamo errori di battitura. Ci distraiamo con i video dei gatti. I Cron Job eseguono l’esatto compito, sempre allo stesso modo, ogni singola volta – senza eccezioni.
3. Il Tuo Server Non Dorme Mai
Con i Cron Job, la manutenzione essenziale avviene 24/7/365, che tu sia sveglio, addormentato o su una spiaggia a sorseggiare margaritas.
4. Log Degli Errori > Memoria Umana
Quando esegui manualmente delle operazioni, riesci a ricordare esattamente cosa hai fatto e quando l’hai fatto? Probabilmente no.
Tuttavia, i Cron Job possono essere configurati per registrare la loro attività, creando un tracciato documentale di tutte le azioni automatizzate per la risoluzione dei problemi e la verifica.
5. Sono Costruiti per l’Espandibilità
Man mano che la tua infrastruttura cresce, gestire tutto manualmente diventa esponenzialmente più difficile. I Cron Job scalano senza sforzo.
Ciò significa che lo stesso lavoro può essere eseguito su più server senza richiedere ulteriore tempo da parte tua.
Configurazione Cron Job: Una Guida Passo Dopo Passo
Basta teoria! Devi mettere le mani in pasta con la configurazione pratica di un Cron Job.
Passo 1: Conferma Che Cron Sia Installato
La maggior parte dei sistemi simili a Unix ha Cron pre-installato. Per verificare se è disponibile per l’uso, digita il comando qui sotto:
crontab -e
A seconda dell’editor predefinito, il comando aprirà il crontab nel tuo editor specifico. Se non hai mai usato crontab prima d’ora, potrebbe chiederti di impostare l’editor predefinito.

Se il terminale risponde con comando non trovato, dovrai installare Cron con i comandi sottostanti:
- Su Ubuntu/Debian:
sudo apt update && sudo apt install cron
- Su CentOS/RHEL:
sudo yum install cronie
Una volta completato, avvia e abilita il servizio Cron Job:
sudo systemctl start cron
sudo systemctl enable cron
Con i comandi start e enable , stiamo avviando il servizio Cron Job per eseguire i cron job.
E con abilita, ci assicuriamo che anche se il tuo server si riavvia, il servizio cron si riavvia automaticamente con esso, e nessun Cron Job viene perso.
Nota Nerd: CentOS chiama il servizio Cron “crond”, quindi dovrai avviare e abilitare il servizio crond.
Passo 2: Comprendere il Crontab
Bene, apri il crontab o il crontable per iniziare ad aggiungere i tuoi lavori programmati.
Ogni utente sul sistema può avere il proprio file Cron Job. Inoltre, esiste un Cron Job a livello di sistema.
Per modificare il tuo Crontab personale:
crontab -e
Questo apre il tuo file Cron Job nel tuo editor di testo predefinito. Se è la tua prima volta, scegli l’editor nano (opzione 1) poiché è il più adatto ai principianti.
Per i crontab a livello di sistema, esegui il comando qui sotto con privilegi sudo:
sudo nano /etc/crontab

Passo 3: Sintassi del Cron Job
Abbiamo già parlato della struttura di base nell’anatomia dei Cron Job in precedenza.
Ma creare un Cron Job può essere a volte confuso. Crontab.guru ti aiuta a visualizzare gli orari dei lavori mentre li inserisci.

Ora passiamo alla parte divertente — scrivere il nostro primo Cron Job. Diamo un’occhiata ad alcuni programmi comuni di Cron Job:
Ogni minuto:
* * * * /path/to/command
Ogni ora al minuto 0:
0 * * * * /path/to/command
Ogni giorno a mezzanotte:
0 0 * * * /path/to/command
Ogni Lunedì alle 3:00:
0 3 * * 1 /path/to/command
Ogni 15 minuti:
*/15 * * * * /path/to/command
Primo giorno di ogni mese alle 6:30:
30 6 1 * * /path/to/command
Passo 4: Creazione del Tuo Primo Cron Job
Passiamo alla creazione di un semplice Cron Job di backup per il tuo server.
Il compito qui sotto crea un backup del tuo sito web ogni giorno alle 2 del mattino.
0 2 * * * tar -czf /path/to/backup/website-backup-$(date +%Y%m%d).tar.gz /path/to/your/website
Genererà un archivio tar compresso della directory del tuo sito web con la data corrente come nome del file.
Passo 5: Salva e Verifica
Ora, esci dall’editor. In nano, premi Ctrl+X e poi premi Y.
Per visualizzare il tuo attuale crontab e verificare che il tuo lavoro sia stato aggiunto:
crontab -l

Ecco fatto! Il tuo primo Cron Job è ora configurato e verrà eseguito automaticamente all’orario programmato.
Esempi Pratici di Cron Job per Gestori di Siti Web
Ora che conosci le basi, esploriamo alcuni Cron Job pratici che possono rendere la tua vita di gestore di siti web notevolmente più semplice.
Backup del Database
Backup del database MySQL (ogni giorno alle 1:00):
0 1 * * * mysqldump -u username -p'password' database_name | gzip > /path/to/backups/db-backup-$(date +%Y%m%d).sql.gz
Rotazione e Pulizia dei Log
Pulisci i log più vecchi di 7 giorni (settimanalmente di domenica):
0 0 * * 0 find /path/to/logs -type f -name "*.log" -mtime +7 -delete
Monitoraggio Delle Prestazioni Del Sito Web
Controlla il tempo di risposta del sito web ogni 5 minuti:
*/5 * * * * curl -o /dev/null -s -w "%{http_code} %{time_total}sn" example.com >> /path/to/logs/website-performance.log
Aggiornamenti Dei Contenuti
Recupera e aggiorna i contenuti dinamici (ogni ora):
0 * * * * /path/to/content-update-script.sh
Rapporti Email
Invia un riepilogo del traffico settimanale ogni lunedì alle 9:00:
0 9 * * 1 /path/to/generate-and-email-report.sh
Scansioni di Sicurezza
Esegui uno script di scansione della sicurezza ogni notte alle 3:00:
0 3 * * * /path/to/security-scan.sh
Migliori Pratiche per Cron Job: Cosa Fare e Cosa Non Fare
Per assicurarti che i tuoi Cron Job funzionino senza intoppi e non causino più problemi di quanti ne risolvano, ecco alcune pratiche migliori importanti.
I Consigli
- Usa sempre percorsi completi per comandi e file: Il tuo ambiente Cron non ha lo stesso PATH della tua shell utente, quindi
“/usr/bin/python”
è meglio di solo python. - Reindirizza l’output per evitare spam via email: Di default, Cron invia qualsiasi output all’utente. Aggiungi
>/dev/null 2>&1
per sopprimere l’output o reindirizzarlo invece a un file di log. - Testa i tuoi comandi prima di programmarli: Esegui manualmente il tuo comando per assicurarti che funzioni come previsto.
Aggiungi commenti per spiegare ogni lavoro — Il tuo futuro io ringrazierà il tuo presente per aver documentato cosa fa ogni Cron Job e perché.
Backup giornaliero del database - Aggiunto da Jane il 2023-05-15
0 1 * * * /path/to/backup-script.sh
Considera l’uso di file di blocco per lavori di lunga durata per impedire l’avvio di una nuova istanza se la precedente è ancora in esecuzione.
0 * * * * flock -n /tmp/script.lock /path/to/your/script.sh
Cosa Non Fare
- Non programmare operazioni che richiedono molte risorse durante le ore di punta: Il tuo backup non deve essere eseguito a mezzogiorno, quando il tuo sito è più affollato.
- Non usare percorsi relativi:
“./script.sh”
fallirà quasi certamente in Cron. - Non dimenticare le variabili di ambiente: Cron non carica il tuo .bashrc o .profile. Imposta le variabili necessarie nel crontab o nello script.
- Non trascurare la registrazione: Senza una registrazione adeguata, il debug dei Cron Job può essere un incubo.
- Non esagerare: Troppi Cron Job frequenti possono sovraccaricare il tuo server. Sii strategico.
Cosa Fare Quando I Cron Job Non Funzionano
L’unico momento in cui devi guardare indietro a un Cron Job è quando si rompe — e quando si rompe, ecco come diagnosticare e risolvere i problemi comuni.
Problema Comune #1: Il Job Non Viene Eseguito
Sintomi: Il tuo task programmato non sembra essere eseguito per niente.
Possibili soluzioni:
- Verifica che il demone Cron sia attivo: Lo status “systemctl” di cron
- Verifica la sintassi del tuo crontab: Usa uno strumento come crontab.guru
- Assicurati dei percorsi completi agli eseguibili: Quale comando per trovare i percorsi completi
- Verifica i permessi dei file: Gli script devono essere eseguibili (chmod +x script.sh)
Problema Comune #2: Il Job Viene Eseguito Ma Fallisce
Sintomi: Il lavoro viene eseguito ma non completa con successo il suo compito.
Potenziali soluzioni:
- Reindirizza l’output a un file di log per vedere gli errori:
* * * * /path/to/script.sh > /path/to/script.log 2>&1
- Testa manualmente il comando con lo stesso ambiente
- Verifica le dipendenze che potrebbero mancare nell’ambiente del Cron Job
Problema Comune #3: Inondazione di Email
Sintomi: La tua casella di posta è inondata di email di output dei Cron Job.
Possibili soluzioni:
- Reindirizza l’output a null:
>/dev/null 2>&1
- Reindirizza a un file di log:
>/path/to/logfile.log 2>&1
Invia email solo in caso di errori:
* * * * /path/to/script.sh >/dev/null || echo "Script fallito" | mail -s "Fallimento Cron" you@example.com
Problema Comune #4: Problemi Di Tempistica
Sintomi: I lavori vengono eseguiti in orari o con frequenze inaspettate.
Possibili soluzioni:
- Verifica le impostazioni del tuo fuso orario — data rispetto alle aspettative di Cron Job
- Tieni conto dei cambiamenti dell’ora legale che potrebbero influenzare la tempistica
- Usa intervalli di tempo espliciti invece di quelli relativi quando la precisione è importante
Tecniche Avanzate Per La Scrittura Di Cron Job
Abbiamo esaminato le basi, e ora sei praticamente un esperto di Cron Job. Ma questa sezione ti porterà un passo avanti.
Utilizzo di Stringhe Speciali
Non è sempre necessario scrivere i Cron Job con quei segni asterisco. Esistono alcune stringhe speciali che permettono di configurare i Cron Job abbastanza facilmente.
- @yearly o @annually: Esegui una volta all’anno (0 0 1 1 *)
- @monthly: Esegui una volta al mese (0 0 1 * *)
- @weekly: Esegui una volta alla settimana (0 0 * * 0)
- @daily o @midnight: Esegui una volta al giorno (0 0 * * *)
- @hourly: Esegui una volta all’ora (0 * * * *)
- @reboot: Esegui una volta all’avvio
Per esempio, se vuoi che qualcosa venga eseguito quotidianamente, scrivi semplicemente il comando qui sotto:
@daily /path/to/daily-backup.sh
Variabili di Ambiente in Crontab
Per evitare di ripetere una stringa più e più volte nei tuoi Cron Job (ad esempio, un percorso specifico o la tua email amministrativa), configura le variabili d’ambiente all’inizio del tuo crontab.
Puoi quindi riutilizzare le variabili come richiesto all’interno dei tuoi script o comandi.
SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
MAILTO=admin@example.com
# Questo lavoro invierà gli errori a admin@example.com
0 2 * * * /path/to/mailing_script.sh
Se utilizziamo la variabile di ambiente MAILTO nel nostro mailing_script.sh, lo script invierà automaticamente un’email all’indirizzo email corretto.
Con questo, modificare l’email dell’amministratore richiederà solo la modifica del valore della variabile MAILTO, invece di apportare modifiche a tutti gli script.
Esecuzione di Processi Come Utenti Diversi
Se hai accesso superuser, puoi modificare il crontab di un altro utente:
sudo crontab -u username -e
Usare Anacron per Macchine Che Non Sono Sempre Accese
A differenza di cron, anacron assicura che le operazioni vengano eseguite anche se il computer era spento durante l’orario programmato:
sudo apt install anacron
Modifica /etc/anacrontab per aggiungere lavori che verranno eseguiti quando il sistema torna online.
Concatenazione di Lavori per Flussi di Lavoro Complessi
Esegui lavori in sequenza:
0 1 * * * /path/to/first-script.sh && /path/to/second-script.sh
Monitoraggio Cron Job
Per una gestione seria del server, considera strumenti come Cronitor che offrono monitoraggio e avvisi per i tuoi Cron Job.
0 * * * * cronitor exec check-12345 -- /path/to/your/script.sh
Parliamo Dei Costi
I Cron Job non possono esistere in isolamento. Richiedono un server e un servizio in esecuzione su un server che devi gestire.
Ora, se stai leggendo questo articolo, è molto probabile che tu abbia un server per il tuo sito web o applicazione.
In effetti, se ospiti con DreamHost VPS o qualsiasi fornitore di hosting basato su Linux, hai già tutto ciò che ti serve per iniziare con l’automazione delle tue attività di gestione del server.
Se non è così, un VPS da $10 al mese è tutto ciò di cui avresti bisogno, specialmente all’inizio.
Per coloro che già utilizzano un DreamHost VPS, il processo non potrebbe essere più semplice:
- Accedi al tuo server via SSH
- Esegui crontab -e per modificare la tua tabella personale dei Cron Job
- Aggiungi i tuoi compiti pianificati
- Salva e lascia che l’automazione abbia inizio!
SSH
Il protocollo Secure Shell (SSH) è un protocollo di rete crittografico utilizzato per eseguire servizi in modo sicuro attraverso una rete non sicura. È prevalentemente impiegato per esecuzioni da linea di comando e accessi remoti.
Leggi di piùEcco fatto. L’infrastruttura per cui stai già pagando diventa improvvisamente più preziosa, più efficiente.
Il Nuovo Autopilota Del Tuo Server
Congratulazioni!
Sei passato dal lavoro manuale alla magia dell’automazione. Con i Cron Job che gestiscono la manutenzione di routine, i backup e il monitoraggio, puoi concentrarti sullo sviluppo del tuo sito web e della tua attività invece di stare a guardare il server.
E ricorda, sarà un processo. L’automazione diventerà più sofisticata man mano che aggiungi sempre più compiti.
Ma per ora, inizia con alcuni Cron Job essenziali, monitora come si comportano e amplia gradualmente la tua automazione man mano che ti abitui al processo.
Ora vai e fai quel pisolino, perché hai appena risparmiato un sacco di tempo.