I cron job svolgono il lavoro silenzioso dietro siti web e server: backup, aggiornamenti, importazioni, fatture, preriscaldamento della cache e pulizie. Quando funzionano, nessuno se ne accorge. Quando si fermano, nessuno se ne accorge lo stesso, finché non manca un backup o una fatturazione non è mai partita.
Perché i cron job contano
Cron pianifica l’esecuzione automatica di comandi a orari o intervalli fissi. Così si risparmia tempo e si elimina il rischio che qualcuno dimentichi un’attività. Significa però anche che lavori critici, come i backup notturni, dipendono da uno scheduler che non avvisa nessuno quando qualcosa va storto.
Le cause più comuni dei cron job saltati
Server offline. Se all’ora prevista il server è spento o si sta riavviando, il job non parte.
Errori di sintassi. Un campo sbagliato nell’espressione di pianificazione può far partire il job all’ora sbagliata o mai.
Configurazione errata. Utente sbagliato, directory di lavoro sbagliata o un job aggiunto a un crontab che non viene mai caricato.
Differenze di ambiente. Cron gira con un ambiente minimo. Un comando che funziona nella tua shell può fallire sotto cron perché mancano PATH o altre variabili.
Sovrapposizioni e timeout. Un job che dura più del suo intervallo può scontrarsi con l’esecuzione successiva. Un tempo massimo di esecuzione sul monitor del job ti avvisa quando un’esecuzione dura troppo.
Individuare e risolvere gli errori
Parti dai log. Il log di sistema (spesso /var/log/syslog o il log di cron della tua distribuzione) mostra se cron ha avviato il job. L’output del job stesso mostra cosa è successo dopo.
Errori tipici e cosa significano:
command not found: usa percorsi assoluti, oppure imposta PATH all’inizio del crontab.
permission denied: controlla i permessi dei file e con quale utente gira il job.
syntax error: controlla l’espressione di pianificazione e le virgolette nel comando.
Reindirizza l’output su un file di log, così i fallimenti lasciano una traccia:
30 2 * * * /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1
Monitorare i cron job
I log servono solo se qualcuno li legge. Il monitoraggio trasforma un fallimento silenzioso in un avviso. Il metodo più affidabile è un heartbeat: al termine, il job invia una richiesta a un URL di monitoraggio. Se la richiesta non arriva entro il tempo previsto, ricevi un avviso.
Con i monitor cron di Uptimecheck, il job invia un ping a un URL univoco con GET o POST. Il monitor accetta la pianificazione del crontab nel tuo fuso orario, riceve ping di avvio e di fine sullo stesso monitor, avvisa quando un’esecuzione supera il tempo massimo previsto e può registrare l’exit code e l’output del job. Se manca un ping, l’avviso arriva via email, Slack, Microsoft Teams, Discord, Google Chat, Mattermost, Telegram, PagerDuty, ntfy, Pushover, webhook o notifiche push sul telefono, su ogni piano. Leggi la guida passo passo Come monitorare i cron job.
Buone pratiche di pianificazione
Pianifica i job pesanti fuori dalle ore di punta.
Scagliona i job che usano le stesse risorse invece di farli partire tutti a mezzanotte.
Usa un lock (per esempio flock) perché un’esecuzione lenta non si sovrapponga alla successiva.
Rivedi le pianificazioni quando la tua applicazione cambia.
Cron su più server
Quando lo stesso job esiste su più server, decidi dove deve girare e assicurati che parta una sola volta. Aiutano una pianificazione centralizzata o un lock in uno store condiviso. Dai a ogni job il suo heartbeat, così sai quale server ha saltato l’esecuzione.
Mettere in sicurezza i cron job
I cron job hanno spesso accesso a database, backup e credenziali.
Limita chi può modificare i crontab.
Tieni i segreti fuori dalla riga del crontab, in file protetti o nella configurazione dell’ambiente.
Rivedi i job regolarmente e rimuovi quelli che non ti servono più.
Usare le risorse in modo efficiente
Esegui i job solo con la frequenza necessaria e mantieni i comandi essenziali. Un report che nessuno legge ogni ora può girare una volta al giorno.
Testa prima di farci affidamento
Esegui un nuovo job a mano con lo stesso utente, controlla l’output e solo dopo pianificalo. Aggiungi subito anche l’heartbeat, così sai fin dalla prima notte se è partito.
Conclusione
I cron job sono essenziali e invisibili, ed è proprio per questo che vanno monitorati. Elimina le cause più comuni, registra l’output e aggiungi un heartbeat a ogni job che conta.
Prova Uptimecheck gratis per 14 giorni, senza carta di credito.