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