Impostare correttamente un cron job del server è una delle attività più importanti per automatizzare processi ripetitivi, gestire backup, lanciare script PHP, Python o shell, inviare email pianificate, aggiornare cache e sincronizzare dati tra sistemi diversi. Chi gestisce un sito web, un e-commerce, un gestionale o un’applicazione personalizzata prima o poi si trova davanti a una domanda precisa: come configurare bene un cron job senza errori?
In questa guida trovi una panoramica completa e pratica su tutte le tecniche per settare il cron job del server, dalle basi fino alle configurazioni più usate in ambienti Linux, hosting condivisi, VPS, server dedicati e pannelli come Plesk o cPanel.
Cos’è un cron job
Un cron job è un’attività pianificata che il server esegue automaticamente a intervalli di tempo definiti. Il termine deriva da cron, il demone presente nei sistemi Unix e Linux che si occupa di controllare il calendario delle operazioni programmate.
In pratica, invece di avviare manualmente uno script ogni giorno o ogni ora, puoi dire al server di farlo in automatico. Questo approccio riduce gli errori umani, fa risparmiare tempo e rende più stabile la gestione tecnica di un progetto.
A cosa serve un cron job del server
I cron job vengono usati in moltissimi scenari reali. Ecco i più comuni:
- backup automatici di file e database
- invio di newsletter o email pianificate
- pulizia di cache, log o file temporanei
- sincronizzazione con API esterne
- aggiornamento di feed XML o CSV
- esecuzione di script per WooCommerce, WordPress o gestionali custom
- controllo scadenze, domini, ordini o notifiche
- import/export di prodotti e listini
- rigenerazione sitemap o contenuti dinamici
Quando il server deve svolgere operazioni ricorrenti, il cron job è quasi sempre la soluzione più efficace.
La sintassi del cron
La sintassi classica del cron usa 5 campi principali:
minuto ora giorno-del-mese mese giorno-della-settimana comando
Esempio:
0 2 * * * /usr/bin/php /var/www/vhosts/sito.it/httpdocs/script.php
Questo comando esegue lo script ogni giorno alle 2:00 del mattino.
I campi funzionano così:
- minuto: da 0 a 59
- ora: da 0 a 23
- giorno del mese: da 1 a 31
- mese: da 1 a 12
- giorno della settimana: da 0 a 7, dove 0 e 7 indicano domenica
I simboli più usati sono:
- * = qualsiasi valore
- , = elenco di valori
- – = intervallo
- / = passo periodico
Esempi pratici di espressioni cron
Ecco alcune configurazioni utili per capire meglio come impostare un cron job del server:
*/5 * * * * comando
Esegue il comando ogni 5 minuti.
0 * * * * comando
Esegue il comando all’inizio di ogni ora.
30 9 * * * comando
Esegue il comando ogni giorno alle 9:30.
0 2 * * 0 comando
Esegue il comando ogni domenica alle 2:00.
0 2 1 * * comando
Esegue il comando il primo giorno di ogni mese alle 2:00.
0 2,14 * * * comando
Esegue il comando ogni giorno alle 2:00 e alle 14:00.
30 9,19 * * * comando
Esegue il comando ogni giorno alle 9:30 e alle 19:30.
Come settare un cron job con crontab su Linux
Su Linux il metodo più classico consiste nell’usare il comando crontab. Per modificare i task pianificati dell’utente corrente si usa:
crontab -e
Si apre così l’editor del file cron personale. Una volta aperto, puoi aggiungere una riga come questa:
0 3 * * * /usr/bin/php /percorso/script.php
Per vedere i cron job esistenti:
crontab -l
Per rimuoverli completamente:
crontab -r
Se lavori come amministratore puoi anche intervenire nei file di sistema come:
/etc/crontab/etc/cron.d//etc/cron.daily//etc/cron.hourly//etc/cron.weekly//etc/cron.monthly/
Questa struttura è utile quando vuoi distinguere task di sistema da task di singoli utenti.
Come impostare un cron job da Plesk o cPanel
Molti utenti non lavorano da terminale ma da pannelli hosting. In questi casi il cron job si può creare da interfaccia grafica.
Plesk
In Plesk di solito il percorso è simile a:
Siti web e domini > Attività pianificate
Da qui puoi inserire:
- il comando da eseguire
- la frequenza
- l’orario
- l’utente di esecuzione, se previsto
Se Plesk chiede il formato cron standard, dovrai usare la classica espressione a 5 campi, ad esempio:
0 2 * * *
cPanel
In cPanel il percorso più comune è:
Advanced > Cron Jobs
Puoi scegliere tra configurazioni preimpostate oppure inserire manualmente minuti, ore, giorni, mesi e giorni della settimana. Dopo aver definito la pianificazione, aggiungi il comando completo.
Un esempio tipico:
/usr/local/bin/php /home/utente/public_html/cron/import.php
Lanciare script PHP, Python e Bash con il cron
Uno degli usi più diffusi del cron job del server è l’esecuzione di script personalizzati.
Script PHP
0 1 * * * /usr/bin/php /var/www/html/script.php
È importante usare il percorso corretto del binario PHP. Su alcuni server può essere diverso, per esempio:
which php
Questo comando ti aiuta a trovare il path esatto.
Script Python
*/15 * * * * /usr/bin/python3 /var/www/html/script.py
Se usi ambienti virtuali, conviene richiamare l’interprete corretto del virtualenv.
Script Bash o Shell
0 4 * * * /bin/bash /var/www/html/backup.sh
Prima di eseguire uno script shell, assicurati che abbia i permessi corretti:
chmod +x backup.sh
Usare wget o curl per URL interne o esterne
In alcuni casi non viene lanciato direttamente un file, ma una URL. È una tecnica usata spesso nei vecchi CMS o in progetti che eseguono routine via HTTP.
*/10 * * * * wget -q -O /dev/null "https://www.tuosito.it/cron.php?token=123"
Oppure:
*/10 * * * * curl -s "https://www.tuosito.it/cron.php?token=123" > /dev/null 2>&1
Questa soluzione è pratica, ma in genere è meno robusta rispetto all’esecuzione diretta di uno script da CLI. Inoltre va protetta con token o sistemi di autenticazione.
Log, debug e controllo errori
Uno degli aspetti più importanti quando configuri un cron job è capire se sta davvero funzionando. Per questo conviene sempre gestire l’output.
Esempio con log personalizzato:
0 2 * * * /usr/bin/php /var/www/html/script.php >> /var/log/mio-script.log 2>&1
In questo modo:
>>aggiunge l’output al file di log2>&1unisce errori standard e output standard
Se invece vuoi silenziare completamente il comando:
0 2 * * * /usr/bin/php /var/www/html/script.php > /dev/null 2>&1
Quando qualcosa non funziona, controlla:
- percorso corretto del comando
- permessi del file
- utente che esegue il cron
- path assoluti e non relativi
- versione di PHP o Python usata da cron
- variabili di ambiente mancanti
Perché usare sempre i path assoluti
Uno degli errori più frequenti è usare percorsi relativi. Nel cron conviene sempre specificare il percorso completo dei file. Per esempio:
/var/www/vhosts/dominio/httpdocs/script.php
anziché:
script.php
Il cron non sempre esegue i comandi nella stessa cartella che ti aspetti, quindi i path assoluti evitano molti problemi difficili da diagnosticare.
Sicurezza e buone pratiche
Configurare un cron job in modo corretto significa anche proteggerlo.
1. Non esporre script sensibili senza protezione
Se il cron richiama una URL web, usa un token segreto, un controllo IP o una chiave temporanea. Evita endpoint pubblici accessibili da chiunque.
2. Limita i permessi
Lo script deve avere solo i permessi strettamente necessari. Non eseguire task delicati come root se non è davvero indispensabile.
3. Evita sovrapposizioni
Se uno script impiega più tempo della frequenza impostata, rischi esecuzioni multiple contemporanee. Per evitarlo puoi usare file di lock o comandi come flock.
Esempio:
*/5 * * * * flock -n /tmp/mio-script.lock /usr/bin/php /var/www/html/script.php
4. Monitora i log
Non basta creare il cron job. Bisogna anche controllare che continui a funzionare nel tempo.
5. Documenta ogni attività pianificata
Se gestisci molti progetti, annota cosa fa ogni cron, ogni quanto gira e quale file coinvolge. Ti farà risparmiare tempo in manutenzione.
Tecniche avanzate per il cron job del server
Quando il progetto cresce, anche la gestione del cron diventa più sofisticata. Ecco alcune tecniche avanzate:
Segmentare i task per funzione
Separare backup, import, notifiche, pulizia cache e sincronizzazioni in script diversi è molto più sicuro rispetto a concentrare tutto in un unico file.
Usare wrapper script
Invece di scrivere comandi lunghi direttamente nel cron, puoi creare uno script shell che prepara ambiente, variabili e logging. Il cron richiamerà solo quel file.
0 2 * * * /bin/bash /opt/scripts/run-import.sh
Gestire ambienti multipli
Su server con staging e produzione conviene avere cron separati e chiaramente etichettati per evitare errori operativi.
Schedulare in momenti strategici
Backup pesanti, import massivi o rigenerazioni complete vanno eseguiti preferibilmente in fasce orarie a basso traffico.
Errori comuni da evitare
Ecco gli errori più frequenti quando si cerca di settare un cron job del server:
- usare una sintassi cron sbagliata
- inserire due orari incompatibili in una sola riga
- dimenticare il path assoluto del binario
- eseguire PHP CLI diverso da quello previsto
- non salvare log o errori
- richiamare URL non protette
- lanciare task troppo frequenti e pesanti
- non considerare il fuso orario del server
- non verificare i permessi dell’utente
Molti problemi di cron non dipendono dal comando in sé, ma dal contesto di esecuzione del server.
Fuso orario e pianificazione corretta
Un altro aspetto spesso sottovalutato è il timezone. Il cron usa di solito il fuso orario del server o quello configurato dal sistema. Se il server è impostato in UTC e tu ragioni in ora italiana, potresti vedere esecuzioni “spostate”.
Per questo, quando pianifichi task importanti come notifiche, backup o aggiornamenti notturni, controlla sempre il fuso orario attivo della macchina o del pannello hosting.
Quando usare cron invece di pseudo-cron
Molti CMS, come WordPress, usano meccanismi interni chiamati spesso pseudo-cron, cioè attività pianificate che partono solo quando arriva una visita al sito. Questo sistema può andare bene per siti molto piccoli, ma su progetti seri è quasi sempre meglio usare un vero cron job di server, perché:
- è più preciso
- non dipende dal traffico del sito
- è più affidabile
- gestisce meglio i task pesanti
Per e-commerce, portali, import automatici e sistemi gestionali, il cron reale è la scelta più professionale.
Conclusioni
Conoscere tutte le tecniche per settare il cron job del server significa avere più controllo sull’automazione del tuo progetto. Un cron job ben configurato permette di eseguire script in modo stabile, ridurre attività manuali, migliorare la manutenzione e rendere più efficiente l’infrastruttura.
Che tu stia lavorando da terminale Linux, da Plesk, da cPanel o su un server dedicato, il principio resta lo stesso: definire con precisione quando eseguire un comando, quale comando lanciare e come monitorare il risultato.
Il consiglio finale è semplice: parti da task piccoli, usa sempre log e path assoluti, testa ogni comando manualmente prima di schedularlo e documenta ogni automazione. Così il cron job del server diventa uno strumento potente, affidabile e davvero utile per qualsiasi progetto web o applicativo.
