Cos’è un cron job: comprendere la sintassi cron e come configurare i cron job

Un cron job è un compito creato utilizzando cron, uno strumento per la pianificazione e l’automazione di operazioni future su sistemi operativi simili a Unix.

L’installazione dei cron job è molto vantaggiosa in quanto non avrai bisogno di eseguire manualmente operazioni ripetitive, garantendo efficienza e minimi errori umani.

In questo articolo, spiegheremo le basi dei cron job, i loro tipi, la sintassi, le stringhe speciali e i permessi. Condivideremo anche le migliori pratiche per i cron job e forniremo esempi di comandi per aiutarti a capire come utilizzare i cron job.

Con i cron job, gli amministratori di sistema possono automatizzare la manutenzione, il monitoraggio dello spazio su disco e i backup a intervalli regolari. Questo rende i cron job ideali per i computer che lavorano 24/7, come un server privato virtuale. Sono utili anche per gli sviluppatori web, poiché possono impostare cron job simultanei a intervalli diversi per eseguire il backup di un sito, controllare i broken link e svuotare la sua cache.

Come funzionano i cron job

Cron è un daemon – un processo in background che esegue lavori non interattivi. Un file cron è un file di testo che contiene comandi da eseguire periodicamente a un orario specifico.

La tabella cron o il file di configurazione crontab è /etc/crontab per impostazione predefinita. Solo gli amministratori di sistema possono modificare il file crontab del sistema. Tuttavia, poiché i sistemi operativi simili a Unix supportano più amministratori, gli utenti possono creare i propri file per pianificare lavori specifici.

Sebbene siano convenienti, ci sono diverse limitazioni dei cron job:

  • L’intervallo più breve tra i lavori è di 60 secondi. Gli utenti possono impostare le impostazioni dell’intervallo del cron job solo a un minuto o più.
  • I lavori mancati necessitano di un ripristino manuale. Gli amministratori non possono distribuire cron job su più computer in una rete. Quindi, se il cron del computer si blocca, i compiti pianificati non verranno eseguiti. Devi riavviare manualmente i lavori mancati.
  • Nessun meccanismo di tentativo automatico. Cron è progettato per funzionare secondo un programma prestabilito. Se un’operazione fallisce, non verrà eseguita fino al prossimo orario programmato. Questo rende cron inadatto per operazioni incrementali.
  • Nessuna variabile d’ambiente. Crontab non può leggere le variabili d’ambiente da diversi file che contengono dati di configurazione necessari per eseguire correttamente alcune applicazioni.

Se desideri automatizzare un lavoro una tantum, ti consigliamo di utilizzare un altro metodo di pianificazione invece.

Suggerimento professionale

Prima di creare un cron job, assicurati che il tuo script funzioni. Per fare ciò, apri il file nel tuo browser tramite URL o eseguilo tramite SSH, a seconda del tipo di script. Se non funziona, contatta il team di supporto del tuo fornitore di hosting per aiuto

Sintassi Crontab

La sintassi del comando crontab

Prima di impostare i cron job, devi comprendere la sintassi e la formattazione di cron per garantire che lo script funzioni correttamente. La sintassi del crontab consiste in cinque campi con i seguenti valori possibili:

  • Minuto. Il minuto dell’ora in cui verrà eseguito il comando, che varia da 0-59.
  • Ora. L’ora in cui verrà eseguito il comando, che varia da 0-23 in una notazione di 24 ore.
  • Giorno del mese. La data del mese in cui l’utente desidera eseguire il comando, che varia da 1-31.
  • Mese. Il mese in cui l’utente desidera che venga eseguito il comando. Varia da 1-12, rappresentando gennaio fino a dicembre.
  • Giorno della settimana. Il giorno della settimana in cui eseguire un comando, che varia da 0-6. Il valore rappresenta domenica-sabato. In alcuni sistemi, il valore 7 rappresenta la domenica.

Importante! Fai attenzione quando programmi i cron job per diversi fusi orari e assicurati che la tua configurazione sia corretta.

Oltre alla sintassi, devi capire gli operatori del cron job per modificare il valore in ogni campo. Devi utilizzare correttamente questi operatori in tutti i file crontab per garantire l’esecuzione dei tuoi comandi:

  • Asterisco (*). Questo operatore indica tutti i possibili valori in un campo. Ad esempio, scrivi un asterisco nel campo Minuto per far eseguire il cron job ogni minuto.
  • Virgola (,). Un operatore per elencare più valori. Ad esempio, scrivendo 1,5 nel campo giorno della settimana programmerai il lavoro per essere eseguito ogni lunedì e venerdì.
  • Trattino (-). Gli utenti possono determinare una gamma di valori. Scrivi 6-9 nel campo Mese per impostare un lavoro cron da giugno a settembre.
  • Separatore (/). Questo separatore divide un valore. Se vuoi eseguire uno script ogni dodici ore, scrivi */12 nel campo Ora.
  • Ultimo (L). Gli utenti possono utilizzare questo operatore nei campi giorno-del-mese e giorno-della-settimana. Ad esempio, scrivere 3L  nel campo giorno della settimana significa l’ultimo mercoledì del mese.
  • Giorno feriale (W). Un operatore che determina il giorno feriale più vicino da un dato orario. Ad esempio, se il di un mese è un sabato, scrivendo 1W nel campo giorno del mese eseguirà il comando il lunedì  3.
  • Cencelletto (#). Un operatore per il campo giorno-della-settimana che determina un giorno specifico del mese, utilizzando un numero tra 1 e 5. Ad esempio, 1#2 significa il secondo lunedì del mese.
  • Punto interrogativo (?). Questo operatore inserisce nessun valore specifico per i campi giorno-del-mese e giorno-della-settimana. Di solito viene sostituito con l’orario di avvio del cron daemon.

Suggerimento professionale

In Vixie cron, puoi combinare separatori con intervalli per specificare valori dei passaggi, come 1-2/12. Per saperne di più sull’uso dell’operatore, leggi il manuale cron.

Se non sei sicuro di come scrivere manualmente la sintassi cron, utilizza strumenti gratuiti come Crontab Generator o Crontab.guru per generare i numeri esatti per l’ora e la data del tuo comando.

Esempi di sintassi cron

Per aiutarti a capire meglio la sintassi di cron, ecco un elenco di comandi di esempio per gestire il sistema con i lavori di cron:

EsempioSpiegazione
0 0 * * 0 /root/backup.shEsegui un backup ogni domenica a mezzanotte.
0 * * * 1 /root/clearcache.shSvuota la cache ogni ora il lunedì.
0 6,18 * * * /root/backup.shEsegui il backup dei dati due volte al giorno alle 6 del mattino e alle 6 del pomeriggio.
*/10 * * * * /scripts/monitor.shEsegui il monitoraggio ogni 10 minuti
*/15 * * * * /root/backup.shEsegui un backup ogni 15 minuti.
* * 20 7 * /root/backup.shEsegui un backup ogni minuto il 20 luglio.
0 0 * * 2 * /root/backup.shEsegui un backup a mezzanotte ogni martedì.
* * * 1,2,5 * /scripts/monitor.shEsegui il monitoraggio ogni minuto nei mesi di gennaio, febbraio e maggio.
10-59/10 5 * * * /root/clearcache.shSvuota la cache ogni 10 minuti alle 5 del mattino, a partire dalle 5:10.
0 8 1 */3 * /home/user/script.shImposta l’esecuzione del compito trimestralmente il primo giorno del mese alle 8 del mattino.
0 * * * * /root/backup.shCrea un backup ogni ora.
* * * * * /scripts/script.sh; /scripts/scrit2.shIncludi più attività in un singolo cron job. Questo è utile per programmare l’esecuzione di molteplici compiti allo stesso tempo.
@reboot /root/clearcache.shSvuota la cache del server ogni volta che accendi il sistema.
0 8 1-7 * 1 /scripts/script.shEsegui uno script il primo lunedì di ogni mese alle 8 del mattino.
5 4 * * 0 /root/backup.shCrea un backup ogni domenica mattina alle 4:05.
15 9 1,20 * * /scripts/monitor.shEsegui il monitoraggio alle 21:15 il 1° e il 20 di ogni mese.
@hourly /scripts/monitor.shEsegui il monitoraggio ogni ora.
0 0 1,15 * 3 /scripts/script.shEsegui uno script a mezzanotte ogni mercoledì tra il 1° e il 15 di ogni mese.
15 14 1 * * /root/clearcache.shSvuota la cache il primo giorno di ogni mese alle 14:15.
15 6 1 1 * /root/backup.shEsegui un backup ogni 1° gennaio alle 6:15 del mattino.
0 0 * * * /scripts/monitor.shEsegui lo script di monitoraggio una volta al giorno a mezzanotte.
0 0 15 * * /root/clearcache.shSvuota la cache a mezzanotte del 15 di ogni mese.

Stringhe speciali di cron job

Le stringhe speciali vengono utilizzate per programmare rapidamente i cron job a determinati intervalli di tempo senza specificare i valori esatti. Per utilizzarle, scrivi una frase semplice che inizia con una @. Ecco alcune stringhe speciali utili da utilizzare nei comandi:

  • @hourly. Il lavoro verrà eseguito una volta ogni ora.
  • @daily o @midnight. Queste stringhe eseguiranno il compito ogni giorno a mezzanotte.
  • @weekly. Una stringa per programmare compiti una volta alla settimana a mezzanotte di domenica.
  • @monthly. Questa stringa speciale esegue un comando una volta il primo giorno di ogni mese.
  • @yearly. Usa questa stringa per eseguire un compito una volta all’anno a mezzanotte il 1° gennaio.
  • @reboot. Questa stringa esegue il cron job una volta durante l’avvio del sistema.

Permessi cron

Assicurati di impostare le corrette autorizzazioni per i file cron del tuo sistema per consentire l’esecuzione dei lavori. Puoi creare o modificare due file per impostare i permessi – cron.allow e cron.deny.

Se /etc/cron.allow esiste, dovrebbe contenere un nome utente autorizzato a eseguire l’automazione del cron job. Tuttavia, se il tuo sistema ha /etc/cron.deny che contiene un nome utente, quell’account non può utilizzare cron.

Come eseguire i cron job

In questa sezione, ti mostreremo come programmare i cron job inserendo comandi in un programma shell su un sistema basato su Linux, come il VPS hosting di Hostinger.

Connettiti al tuo VPS utilizzando Terminal o un client SSH come PuTTY. In alternativa, gli utenti del VPS di Hostinger possono accedere all’interfaccia della riga di comando (CLI) sul loro browser web tramite hPanel.

Suggerimento professionale

Oltre ai VPS, i t piani di hosting gestiti di Hostinger supportano anche i cron job. Ad esempio, il piano Web Hosting Business ti permette di programmare lavori illimitati.

Dopo aver acceduto a hPanel, naviga nel menu VPS sulla barra superiore e seleziona il tuo piano. Quindi, fai clic su Terminale del browser.

La pagina delle informazioni VPS su hPanel. Viene evidenziata la finestra del terminale del browser

Cron è comunemente preinstallato di default in tutte le distribuzioni Linux. Altrimenti, esegui il comando di installazione in base al tuo gestore di pacchetti. Ecco il comando per Ubuntu con apt:

sudo apt install cron

Prima di procedere con le operazioni di base del cron job, devi comprendere i file di configurazione – il crontab di sistema e il crontab dell’utente.

Il crontab di sistema viene utilizzato per pianificare lavori essenziali a livello di sistema che sono modificabili solo da coloro che hanno privilegi di root. Nel frattempo, sfrutta il crontab dell’utente per creare e modificare lavori che si applicano solo a livello utente.

Per modificare il crontab di sistema, assicurati che l’utente corrente abbia privilegi di root. Continua a leggere per apprendere diverse operazioni di base che cron può eseguire.

Un'operazione di cron job di base

Utilizzo di un cron job per creare un file crontab

Inserisci il frammento di codice sottostante nella riga di comando per modificare un file crontab esistente. Se il tuo sistema non lo ha, il comando ne creerà automaticamente uno nuovo.

crontab -e

Quando inserisci per la prima volta crontab -e, ti verrà chiesto di scegliere con quale editor di testo desideri modificare il file, come ad esempio nano o vi. Nell’editor di testo, puoi aggiungere altri comandi o modificare quelli esistenti.

Utilizzo di cron job per visualizzare un elenco di attività pianificate attive

Per vedere un elenco di attività attive e programmate nel tuo sistema, inserisci il seguente comando:

crontab -l

Se il tuo sistema ha più utenti, puoi visualizzare i loro elenchi di file crontab inserendo il comando sottostante come superutente:

crontab -u username -l

Utilizzo di cron job per concederti l’accesso root

A causa delle restrizioni sui privilegi degli utenti, alcuni comandi possono essere eseguiti solo utilizzando i permessi di root. Per concederti i privilegi di root, aggiungi sudo su all’inizio del comando.

Ad esempio, hai bisogno di sudo su per eseguire un comando crontab che modifica i lavori pianificati di altri utenti:

sudo su crontab -u username -e

Inoltre, puoi aggiungere cron job alla directory etc/cron.d per memorizzare script di installazione e aggiornamento automatici. Per aggiungerli a questa directory, devi avere accesso root e conformarti alle convenzioni di denominazione di run-parts.

In alternativa, un utente root può spostare i propri script di cron job nelle seguenti directory per programmarne l’esecuzione:

  • /etc/cron.hourly/. Esegui lo script una volta ogni ora.
  • /etc/cron.daily/. Eseguilo una volta al giorno.
  • /etc/cron.weekly/. Eseguilo una volta alla settimana.
  • /etc/cron.monthly/. Eseguilo una volta al mese.

Utilizzo di un cron job per eliminare le attività pianificate

Per eliminare tutti i compiti pianificati nelle voci di crontab e ricominciare da capo, digita il seguente comando:

crontab -r

In alternativa, utilizza il comando crontab -i . È simile al precedente, tranne che otterrai un’opzione di conferma prima di rimuovere il crontab:

crontab -i

Conclusioni

Cron daemon è un servizio in un sistema basato su Unix che ti permette di creare script di automazione per la pianificazione delle operazioni. Nel frattempo, i cron job sono le operazioni automatizzate utilizzando questo strumento, come l’aggiornamento, l’installazione o il monitoraggio di un sistema.

Per automatizzare le operazioni, scrivi il comando crontab nel file cron del tuo sistema. Il comando contiene lo script per l’esecuzione e cinque asterischi che si riferiscono all’orario di esecuzione del cron job. Cambia il valore di questi asterischi e usa gli operatori per modificare l’orario.

Per eseguire un lavoro cron, connettiti al tuo sistema operativo Linux utilizzando Terminal, un client SSH o un’altra applicazione CLI con permesso di root. Quindi, crea un file crontab e aggiungi lo script utilizzando un editor di testo come Nano.

FAQ sui cron job

In questa sezione, risponderemo a diverse domande frequenti sui cron job per aiutarti a capire meglio lo strumento.

Cosa fa un cron job?

I cron job sono comandi Linux per automatizzare operazioni ripetitive sul tuo server. Ti consente di pianificare operazioni per il tuo sistema come l’aggiornamento, l’installazione o il monitoraggio con un singolo comando.

Qual è l’uso di **** in Cron?

**** è un carattere jolly dell’espressione di pianificazione cron, il che significa che il tuo cron job dovrebbe essere eseguito ogni minuto, indipendentemente dall’ora, dal giorno, dalla data o dal mese.

Come posso eseguire un cron job?

Accedi al tuo server come utente root tramite SSH utilizzando PuTTY, Terminal o il terminale del browser integrato di Hostinger. Quindi, crea un file utilizzando il comando crontab -e.

Scegli un editor per visualizzare il file e aggiungi il tuo script di cron job al file crontab vuoto. Salva il file una volta terminato per abilitare l’automazione.

Author
L'autore

Michela Z.

Michela si focalizza sul condividere le sue conoscenze di hosting e marketing digitale e sull'aiutare le aziende ad avere successo online, con un particolare interesse per la creazione di siti web e di e-commerce. Nel suo tempo libero le piace sedersi davanti un buon libro e ascoltare musica.