Accesso clienti

Ritorno

Cosa sono i Cron Job e a cosa servono?

Molti compiti su un sito web o server devono essere ripetuti periodicamente: creare un backup, aggiornare l’inventario di un negozio, pulire i file temporanei o inviare un rapporto. Farlo manualmente non solo richiede tempo, ma aumenta anche il rischio di dimenticanze ed errori.

Un Cron Job ti permette di programmare queste azioni affinché vengano eseguite automaticamente al momento o alla frequenza che scegli. In questo articolo, vedremo cos’è un Cron Job, come funziona e come puoi configurarlo dal tuo hosting

Indice dei Contenuti

Cos’è un Cron Job?

Un Cron Job è un compito programmato che un sistema esegue automaticamente a una data, ora o frequenza specifica.

Puoi pensarlo come un allarme per il server. Definisci cosa deve fare e quando deve farlo; quando arriva l’ora indicata, il sistema esegue il compito senza che tu debba intervenire.

Cron è un sistema nativo di Unix e sistemi derivati, come Linux. Pertanto, i Cron Job sono comuni su server e servizi di hosting che utilizzano questi sistemi. Per eseguire compiti programmati, possono eseguire un comando (un’istruzione diretta per il server), uno script (un piccolo programma che raccoglie diverse istruzioni) o accedere automaticamente a un URL per attivare un’azione specifica.

Differenze tra cron, crontab e Cron Job

Anche se spesso vengono usati come sinonimi, questi concetti non significano esattamente la stessa cosa:

  • Cron è il servizio di sistema che controlla il programma ed esegue i compiti.
  • Crontab è il file o la configurazione dove sono memorizzati i compiti programmati.
  • Cron Job è ciascuno dei compiti specifici che sono stati configurati.

In altre parole, cron è colui che controlla il calendario, crontab contiene le istruzioni e il Cron Job è l’azione che deve essere eseguita.

A cosa servono i Cron Job?

I Cron Job vengono utilizzati per automatizzare processi che devono essere eseguiti periodicamente. Ecco alcuni dei loro usi più comuni.

Creare backup del database

Puoi programmare un Cron Job per creare periodicamente un backup del database del tuo sito web. Può memorizzare informazioni importanti, come utenti, impostazioni, voci o gli ordini e le vendite di un negozio online.

Così, se si verifica un problema, avrai una copia recente dei dati che cambiano più frequentemente.

Tieni presente che queste copie occuperanno spazio se memorizzate all’interno dell’hosting stesso. Pertanto, è importante controllare quanto spazio consumano, eliminare le vecchie copie di cui non hai più bisogno e, quando possibile, salvare un’altra copia in un luogo esterno e sicuro.

È anche consigliabile controllare periodicamente che le copie siano create correttamente e che possano essere utilizzate per recuperare le informazioni.

Pulire file temporanei e log

I file temporanei, le cache e i log possono accumularsi nel tempo e occupare spazio non necessario. Un Cron Job può eliminarli periodicamente secondo i criteri che hai definito.

Eseguire compiti di manutenzione

Possono anche essere utilizzati per sincronizzare dati, generare rapporti, elaborare file, aggiornare informazioni o eseguire altri processi interni di un’applicazione.

Inviare notifiche programmate

Un Cron Job può attivare l’invio di promemoria, avvisi, rapporti periodici o email transazionali. L’invio deve essere gestito tramite uno script o un’applicazione preparata per esso.

Automatizzare processi di un negozio online

In un ecommerce, i compiti programmati possono essere utilizzati per aggiornare gli inventari, sincronizzare gli ordini, generare fatture o importare informazioni da altri sistemi.

Quali parti compongono un Cron Job?

Prima di vedere esempi, è importante capire quali informazioni contiene un Cron Job. Un compito programmato deve fondamentalmente indicare due cose: quando vuoi che venga eseguito e cosa vuoi che faccia.

Per esempio:

0 3 * * * /path/script.sh

Anche se può sembrare complicato all’inizio, questa istruzione è divisa in due parti molto semplici:

Quando dovrebbe essere eseguito

0 3 * * *

I cinque valori indicano il momento in cui vuoi che il compito venga eseguito:

minuto | ora | giorno del mese | mese | settimana
   0   |  3  |       *         |  *   |     * 

In questo caso, significa: ogni giorno alle 03:00.

Gli asterischi (*) significano «qualsiasi valore». Pertanto, mettendo * in giorno, mese e giorno della settimana, non stiamo limitando il compito a una data specifica.

Cosa dovrebbe essere eseguito

/path/script.sh

Questa seconda parte indica cosa deve fare il server quando arriva quel momento.

Nell’esempio, viene utilizzato il percorso di uno script, cioè un file che contiene le istruzioni del compito che vogliamo eseguire. Potrebbe essere, per esempio, uno script responsabile della creazione di un backup.

Pertanto:

0 3 * * * /path/script.sh

può essere semplicemente letto come:

«Ogni giorno alle 03:00, esegui questo script.»

In cdmon, puoi creare e gestire questi compiti direttamente dal Pannello di Controllo. Più avanti, vedremo passo dopo passo dove trovare questa opzione e come configurarla.

Dove viene configurato tutto questo?

Il modo di configurare un Cron Job dipende dal server o dal servizio di hosting che utilizzi. Su un server, può essere fatto tramite il file crontab, mentre alcuni fornitori di hosting offrono un’interfaccia per configurarlo più facilmente.

Come indicare la frequenza di un Cron Job

Se configuri il Cron Job dal cdmon Pannello di Controllo, di solito non dovrai scrivere queste espressioni manualmente, poiché puoi selezionare la frequenza tramite campi e opzioni più visive. Anche così, conoscere la sua struttura ti aiuterà a capire come viene programmato ogni compito e a creare programmi più specifici.

Come abbiamo visto, le prime cinque posizioni di un Cron Job indicano quando il compito deve essere eseguito. Oltre a inserire un numero specifico, possiamo usare alcuni simboli per creare programmi più flessibili.

Per esempio, possiamo indicare che un compito venga eseguito ogni giorno, ogni 15 minuti o solo dal lunedì al venerdì.

I simboli più comuni sono:

SimboloA cosa serveEsempio
*Include tutti i valori possibili* nelle ore = tutte le ore
,Permette di selezionare diversi valori specifici1,3,5 = Lunedì, Mercoledì e Venerdì
–Include tutti i valori all’interno di un intervallo9-17 = dalle 09:00 alle 17:59
/Ripete il compito ogni un certo numero di unità*/10 = ogni 10 minuti

I valori utilizzati per rappresentare i giorni della settimana possono dipendere dal sistema. Di solito, 1 corrisponde a Lunedì e 0 o 7 a Domenica.

Il trattino -: un intervallo

Il trattino permette di includere tutti i valori tra due numeri. Per esempio:

9-17

Se appare nel campo delle ore, significa che il compito può essere eseguito dalle 09:00 alle 17:59.

Può anche essere utilizzato in altri campi. Per esempio, 1-5 nel giorno della settimana di solito rappresenta da Lunedì a Venerdì.

La barra /: una ripetizione

La barra permette di stabilire ogni quante unità un compito deve essere eseguito. Di solito è combinata con un asterisco:

*/15

L’asterisco rappresenta tutti i valori possibili del campo e /15 indica che devono essere presi ogni 15.

Se */15 appare nel campo dei minuti, il compito verrà eseguito ai minuti 00, 15, 30 e 45 di ogni ora.

Per esempio:

*/15 * * * *

Viene interpretato come segue:

  • */15: ogni 15 minuti.
  • Il secondo *: qualsiasi ora.
  • Il terzo *: qualsiasi giorno del mese.
  • Il quarto *: qualsiasi mese.
  • Il quinto *: qualsiasi giorno della settimana.

Pertanto, il compito verrà eseguito ogni 15 minuti, ogni giorno.

Importante: cron segue posizioni specifiche dell’orologio. Non aspetta 15 minuti da quando termina l’esecuzione precedente. Per esempio, anche se un compito iniziato alle 10:00 termina alle 10:04, il successivo sarà comunque programmato per le 10:15.

Esempi di Cron Job

Questi esempi mostrano come vengono interpretate alcune delle espressioni più comuni. Il percorso e il comando devono essere adattati al server e allo script che vuoi eseguire.

Eseguire un compito ogni ora

0 * * * * /path/script.sh

Il compito verrà eseguito all’inizio di ogni ora.

Eseguire un compito ogni giorno alle 03:00

0 3 * * * /path/script.sh

Il primo valore indica il minuto 0 e il secondo, l’ora 3.

Eseguire un compito ogni 15 minuti

*/15 * * * * /path/script.sh

In questo caso, il compito verrà eseguito quattro volte ogni ora.

Eseguire un compito ogni Lunedì alle 09:30

30 9 * * 1 /path/script.sh

L’1 nell’ultimo campo rappresenta il Lunedì.

Eseguire un compito il primo giorno di ogni mese

0 0 1 * * /path/script.sh

Il compito inizierà alle 00:00 del 1° di ogni mese.

Esempio combinando diversi simboli

*/10 9-17 * * 1-5

Questa espressione indica che il compito verrà eseguito ogni 10 minuti, tra le 09:00 e le 17:59, dal Lunedì al Venerdì.

Come configurare un Cron Job nel tuo hosting cdmon

Se hai un hosting in cdmon, puoi facilmente creare e gestire i tuoi compiti programmati dal Pannello di Controllo. Non hai bisogno di usare comandi o avere conoscenze tecniche avanzate. (aggiungi immagini)

1. Accedi alla gestione dell’hosting

Entra nel Pannello di Controllo, seleziona l’hosting corrispondente e vai a: Server > CRONJobs

2. Scegli il tipo di configurazione

Il pannello offre due opzioni:

  • Configurazione di base: permette di selezionare la frequenza tramite un modulo semplice.
  • Configurazione avanzata: offre un controllo più preciso su minuti, ore, giorni, mesi e giorni della settimana.

La configurazione di base è sufficiente per la maggior parte dei compiti periodici. Puoi usare quella avanzata quando hai bisogno di impostare un programma più specifico.

3. Identifica il compito

Inserisci un nome che ti permetta di riconoscere facilmente il Cron Job. Usare nomi descrittivi è particolarmente utile quando hai diversi compiti programmati.

Per esempio:

aggiorna-inventario

4. Inserisci la risorsa da eseguire

Indica la chiamata allo script che vuoi eseguire. Nel pannello cdmon, questa chiamata può essere configurata tramite HTTP o HTTPS e includere i parametri di cui il processo ha bisogno.

Prima di salvare il compito, verifica che l’indirizzo sia corretto e che lo script funzioni quando eseguito manualmente.

5. Imposta la frequenza

Seleziona i minuti, le ore, i giorni e i mesi in cui deve essere eseguito. In modalità avanzata, puoi anche definire un giorno specifico della settimana.

Non programmare un compito con una frequenza superiore al necessario. Eseguire un processo pesante ogni minuto che deve essere fatto solo una volta al giorno può aumentare il consumo di risorse dell’hosting.

6. Attiva la conferma email se necessario

Puoi richiedere che il sistema ti invii il risultato di ogni esecuzione via email. Tieni presente che riceverai il messaggio solo quando lo script genera un output.

Pertanto, non ricevere un’email non significa necessariamente che il compito sia fallito: potrebbe anche indicare che lo script è stato eseguito senza restituire alcun risultato.

Puoi controllare tutti i passaggi nella guida su come configurare CRONJobs o compiti programmati da cdmon.

Cron Job e WordPress: sono uguali a WP-Cron?

No. Entrambi permettono di programmare compiti, ma non funzionano allo stesso modo:

  • Un Cron Job del server esegue un compito quando arriva la data o l’ora programmata.
  • WP-Cron è il sistema che WordPress utilizza per gestire i propri compiti programmati. Di solito controlla se c’è qualche compito in sospeso quando qualcuno visita il sito web.

Per esempio, se programmi un post per essere pubblicato alle 10:00, WP-Cron è responsabile della sua pubblicazione. Tuttavia, se il sito web non riceve visite in quel momento, la pubblicazione potrebbe essere ritardata fino a quando non si verifica una nuova visita.

Quali compiti svolge WP-Cron?

WordPress e alcuni plugin (come WooCommerce, UpdraftPlus, Wordfence o MailPoet) possono utilizzare WP-Cron per:

  • Pubblicare post programmati.
  • Controllare la disponibilità di aggiornamenti.
  • Creare backup utilizzando plugin.
  • Inviare avvisi o email programmati.
  • Eseguire compiti di manutenzione periodici.

Quali problemi può causare?

Poiché WP-Cron viene solitamente attivato dalle visite al sito web, il suo funzionamento dipende in parte dal traffico:

  • Se il sito web riceve poche visite, alcuni compiti potrebbero essere eseguiti più tardi del previsto.
  • Se ne riceve molte, WordPress potrebbe controllare troppo frequentemente se ci sono compiti in sospeso, aumentando inutilmente il consumo di risorse.

Plugin WordPress per gestire WP-Cron

Se utilizzi WordPress, ci sono plugin che ti permettono di consultare e gestire i compiti programmati di WP-Cron direttamente dal pannello di amministrazione:

  1. WP Crontrol ti permette di consultare, modificare, eliminare ed eseguire manualmente gli eventi programmati di WordPress.
  2. Advanced Cron Manager offre strumenti per consultare, mettere in pausa, modificare, eliminare e creare eventi e frequenze di WP-Cron.

Questi plugin possono aiutarti a rilevare compiti che falliscono, si ripetono troppo frequentemente o consumano più risorse del previsto. Tuttavia, non eseguono queste azioni da soli né gestiscono i Cron Job del server.

Quando è conveniente usare un Cron Job del server?

Puoi configurare un Cron Job del server per attivare WP-Cron a una frequenza determinata. In questo modo, i compiti di WordPress vengono eseguiti più regolarmente e non dipendono più dalle visite.

Questa configurazione può essere utile per:

  • Evitare ritardi nei compiti programmati.
  • Ridurre controlli inutili.
  • Controllare con quale frequenza viene eseguito WP-Cron.
  • Gestire meglio le risorse dell’hosting.

Per applicare questa modifica, devi prima impedire a WordPress di attivare WP-Cron con ogni visita e poi configurare un Cron Job sul server per eseguirlo periodicamente. Puoi controllare tutti i passaggi nella nostra guida su come ridurre il consumo di wp-cron.php in un hosting cdmon.

Importante: non disabilitare l’attivazione automatica di WP-Cron senza prima configurare un’alternativa. Altrimenti, i post programmati, i backup e altri compiti di WordPress potrebbero smettere di essere eseguiti.

Migliori pratiche nella configurazione di compiti programmati

Una frequenza corretta non garantisce da sola che il compito funzionerà bene. Devi anche considerare come viene eseguito e cosa succede se si verifica un errore.

Prima verifica che il compito funzioni

Prima di programmare un compito per l’esecuzione automatica, verifica che l’azione funzioni da sola.

Per esempio, se il Cron Job deve accedere a un URL per avviare un processo, apri prima quell’indirizzo nel browser. Se deve eseguire uno script (un file contenente le istruzioni del compito), eseguilo una volta manualmente.

In questo modo, puoi controllare eventuali errori prima di automatizzarlo. Se l’azione non funziona quando avviata manualmente, non funzionerà quando il Cron Job tenterà di eseguirla.

Indica la posizione completa del file

Quando configuri il compito, indica la posizione esatta dello script all’interno del server. Non limitarti a scrivere il nome del file, poiché Cron potrebbe non sapere dove trovarlo.

Per esempio, invece di indicare:

backup.sh

usa il percorso completo:

/home/user/scripts/backup.sh

Se lo script necessita di un programma specifico per essere eseguito, come PHP o Python, potrebbe essere necessario indicare anche la sua posizione completa. Questo evita errori, poiché Cron non utilizza sempre la stessa configurazione di un terminale aperto manualmente.

Applica i permessi minimi necessari

Configura il compito con un utente che abbia solo i permessi necessari per eseguirlo. Per esempio, se deve solo creare una copia di una cartella, non ha bisogno di accesso all’intero server.

Così, se lo script contiene un errore o si verifica un problema di sicurezza, il danno che potrebbe causare è limitato.

Proteggi le credenziali

Non includere password, token o altri dati sensibili direttamente in un URL o comando che potrebbe essere visibile nei log, nelle cronologie o nei messaggi email.

Se lo script necessita di autenticazione, utilizza un metodo sicuro per memorizzare e recuperare le credenziali.

Evita esecuzioni simultanee

Se un compito impiega più tempo a finire rispetto all’intervallo stabilito, una nuova esecuzione potrebbe iniziare mentre quella precedente è ancora attiva. Questo può causare duplicazioni o aumentare il consumo di CPU, memoria e disco.

Prima di impostare una frequenza elevata, calcola quanto tempo impiega il processo e, se necessario, incorpora un sistema di blocco per evitare sovrapposizioni.

Controlla il fuso orario

L’orario utilizzato da cron dipende dalla configurazione del server. Controlla che corrisponda al fuso orario che ti aspetti, soprattutto se hai bisogno di eseguire azioni a un’ora specifica.

Dovresti anche considerare i cambiamenti dell’ora legale.

Tieni un registro delle esecuzioni

Ogni volta che è possibile, fai in modo che lo script registri:

  • Quando inizia.
  • Quando termina.
  • Quale risultato ha ottenuto.
  • Se si è verificato un errore.

Questi registri ti aiuteranno a scoprire se il compito non è stato eseguito o se è iniziato correttamente ma si è bloccato durante il processo.

Il modo di creare questo registro dipende dallo script utilizzato. Lo script stesso potrebbe essere preparato per scrivere le informazioni in un file o, se configuri il compito utilizzando comandi, puoi indicare che il suo output venga salvato in un file specifico.

Quindi, puoi aprire quel file per controllare se il compito è stato eseguito correttamente o se si è fermato a causa di un errore.

Evita di salvare i registri in una cartella pubblica del sito web, poiché potrebbero contenere percorsi o altre informazioni tecniche. È anche consigliabile eliminare o archiviare periodicamente i vecchi registri in modo che non occupino troppo spazio.

Distribuisci i compiti

Evita di programmare tutti i processi allo stesso tempo. Distribuirli riduce i picchi di consumo e aiuta le risorse dell’hosting a essere disponibili quando ogni compito ne ha bisogno.

Errori comuni nella configurazione di un Cron Job

Quando un compito non viene eseguito come previsto, di solito è dovuto a uno di questi motivi.

Il programma ha un formato errato

Controlla che l’espressione abbia i cinque campi necessari e che siano posizionati nell’ordine corretto. Se l’hai copiata da un altro strumento, verifica che sia compatibile: alcuni sistemi aggiungono un campo per i secondi, mentre il formato cron tradizionale non lo utilizza.

Il percorso o l’URL non esiste

Controlla che il file sia effettivamente nella posizione indicata e che non hai commesso errori quando hai scritto l’indirizzo.

Lo script non ha i permessi necessari

L’utente che esegue il Cron Job deve avere il permesso di accedere al file e di eseguire le azioni incluse nello script.

Variabili d’ambiente mancanti

Cron di solito viene eseguito con un ambiente più limitato rispetto a un terminale. Un comando che funziona manualmente potrebbe fallire se dipende da una variabile, un percorso o una configurazione che cron non conosce.

Usa percorsi completi e definisci esplicitamente i valori di cui il processo ha bisogno.

L’orario non corrisponde

Se il compito viene eseguito prima o dopo del previsto, controlla il fuso orario del server e la configurazione dell’applicazione stessa.

La frequenza è troppo alta

Eseguire un compito ogni minuto non significa sempre che finirà prima. Se il processo è pesante, una frequenza eccessiva può causare diverse esecuzioni simultanee e influire sulle prestazioni dell’hosting.

Come verificare se un Cron Job funziona

Puoi seguire questo processo per verificare un nuovo compito:

  1. Prima testa l’azione manualmente. Esegui lo script o apri l’URL per confermare che funzioni prima di automatizzarlo.
  2. Imposta un’esecuzione di prova. Programma temporaneamente il Cron Job per attivarsi entro pochi minuti, invece di aspettare il suo programma finale.
  3. Attendi che venga eseguito automaticamente. Non avviare manualmente l’azione di nuovo durante il test.
  4. Controlla il risultato. Verifica se il file, il backup o qualsiasi altro elemento previsto è stato creato o modificato.
  5. Consulta i log. Se il compito non ha funzionato, rivedi i log per individuare possibili errori nel percorso, nei permessi o nello script stesso.
  6. Imposta il programma finale. Una volta confermato che tutto funziona, configura la frequenza che utilizzerai regolarmente.
  7. Rivedi le prime esecuzioni. Monitora il compito durante i primi giorni per assicurarti che continui a funzionare correttamente.

Se hai attivato le conferme email dal Pannello di Controllo di cdmon, riceverai un messaggio solo quando lo script genera una risposta o un’informazione. Non ricevere un’email non significa necessariamente che il compito non sia stato eseguito.

Domande frequenti sui Cron Job

Cos’è un Cron Job?

Un Cron Job è un compito che un server esegue automaticamente a una data, ora o frequenza specifica. Viene utilizzato per automatizzare processi ripetitivi senza intervento manuale.

A cosa serve un Cron Job?

Viene utilizzato per eseguire script, comandi o chiamate a un URL periodicamente. Può essere utilizzato per creare backup, pulire file, inviare notifiche o sincronizzare informazioni.

Cosa significa * * * * * in cron?

Significa che il compito è programmato per essere eseguito ogni minuto. I cinque asterischi rappresentano il minuto, l’ora, il giorno del mese, il mese e il giorno della settimana.

Come posso eseguire un compito ogni giorno?

L’espressione 0 3 * * * programma un compito ogni giorno alle 03:00, secondo il fuso orario utilizzato dal server.

Qual è la differenza tra cron e crontab?

Cron è il servizio che controlla ed esegue i compiti. Crontab è il file o la configurazione dove sono definiti i loro programmi e comandi.

Un Cron Job può influire sulle prestazioni?

Sì. Un compito pesante, troppo frequente o con diverse esecuzioni simultanee può consumare CPU, memoria e spazio su disco. Pertanto, devi regolare la sua frequenza e controllare quanto tempo impiega a completarsi.

WP-Cron è un vero Cron Job?

No. WP-Cron è il sistema di compiti programmati di WordPress e viene solitamente attivato dalle visite o dalle richieste al sito web. Un Cron Job del server può essere eseguito con una frequenza fissa senza dipendere dal traffico.

Come faccio a sapere se un Cron Job è stato eseguito?

Puoi rivedere i log dello script, controllare il risultato generato o attivare le conferme email disponibili nel Pannello di Controllo di cdmon.

Abbiamo soluzioni per tutti