Indice dei contenuti dell'articolo:
Nell’attuale era digitale, caratterizzata da flussi di dati ininterrotti e operazioni che si svolgono 24 ore su 24, gli amministratori di sistema si confrontano costantemente con la necessità di gestire task e processi che devono essere eseguiti a orari ben definiti. In questa cornice, spicca per utilità e funzionalità il cron, una utility di pianificazione dei task presente nei sistemi operativi Unix-like, tra cui il celebre Linux.
Cron si rivela uno strumento di incredibile potenza e flessibilità, in grado di automatizzare l’esecuzione di comandi o script secondo una programmazione temporale definita. La gamma di attività che può gestire è ampia e variegata, includendo l’eliminazione periodica dei file temporanei, la creazione di backup di dati critici, il monitoraggio e controllo dello stato del sistema, oltre a una moltitudine di altre operazioni che, se gestite manualmente, possono risultare onerose e soggette ad errori.
Uno degli aspetti più affascinanti di cron risiede nella sua combinazione unica di versatilità e semplicità. Pur disponendo di una struttura complessa che permette di definire schedule di esecuzione molto precise, la sua gestione è incredibilmente semplice. Con poche righe di codice, è possibile programmare una serie di operazioni ricorrenti, ottenendo un notevole risparmio di tempo e riducendo al minimo gli errori dovuti all’intervento umano. Questo rappresenta un vantaggio considerevole in un contesto in cui l’efficienza operativa e l’affidabilità del sistema sono di vitale importanza.
Come è strutturato un cron su Linux?
Un cron job in Linux è definito da una singola riga di testo all’interno del crontab, la “tabella cron”. Questa riga di testo è suddivisa in sei parti distinte, ognuna delle quali rappresenta un elemento diverso del cron job.
Queste parti, in ordine, sono:
- Minuto: Questo campo può assumere valori da 0 a 59 e indica il minuto di ogni ora in cui il cron job deve essere eseguito.
- Ora: Questo campo può assumere valori da 0 a 23 e indica l’ora del giorno in cui il cron job deve essere eseguito.
- Giorno del mese: Questo campo può assumere valori da 1 a 31 e indica il giorno del mese in cui il cron job deve essere eseguito.
- Mese: Questo campo può assumere valori da 1 a 12 e indica il mese dell’anno in cui il cron job deve essere eseguito.
- Giorno della settimana: Questo campo può assumere valori da 0 a 7, dove sia 0 che 7 rappresentano la domenica. Indica il giorno della settimana in cui il cron job deve essere eseguito.
- Comando o script: Questo è il comando che si desidera eseguire o il percorso al file di script da eseguire. Può includere qualsiasi comando che si eseguirebbe normalmente dalla riga di comando.
Ogni campo è separato da uno spazio. È inoltre possibile utilizzare speciali operatori come ““, “/”, “-“, “,” e “/” per specificare cron job che si ripetono a intervalli regolari o che avvengono in momenti specifici.
Per esempio, la riga 0 14 * * * /percorso/allo/script.sh
nel crontab indica un cron job che eseguirà lo script specificato ogni giorno alle ore 14:00.
Come impostare un cron tramite SSH
Prima di iniziare, è importante notare che avrai bisogno di accesso SSH al tuo server. Se non lo avessi già, dovresti procurartelo, poiché SSH è uno strumento fondamentale per la gestione di un server remoto.
SSH, acronimo di Secure Shell, è un protocollo di rete che consente la comunicazione sicura tra due sistemi utilizzando un’architettura client-server. Permette agli utenti di controllare e modificare i loro server remoti su Internet.
Per accedere al tuo server tramite SSH, avrai bisogno delle credenziali dell’utente, che includono l’indirizzo IP del server, il nome utente e la password. Se non hai queste informazioni, dovrai richiederle all’amministratore di sistema.
Ecco i passaggi per impostare un cron tramite crontab:
- Accesso al Server: Prima di tutto, connettiti al tuo server utilizzando SSH. Puoi farlo dal tuo terminale utilizzando il comando
ssh username@your_server_ip
. - Apertura del Crontab: Una volta connesso, puoi accedere al crontab, la tabella che cron utilizza per tracciare i lavori programmati, utilizzando il comando
crontab -e
. Se è la prima volta che usi crontab, ti verrà chiesto di scegliere l’editor di testo che preferisci. Puoi scegliere tra opzioni come nano, vi o emacs. - Scrittura del Job: Ora, è possibile inserire il tuo job. Ogni linea del crontab rappresenta un job ed è costituita da sei parti: minuto (0-59), ora (0-23), giorno del mese (1-31), mese (1-12), giorno della settimana (0-7, dove sia 0 che 7 rappresentano la domenica), e il comando o lo script da eseguire.
- Salvataggio del Job: Dopo aver inserito il tuo job, salva e chiudi l’editor. Se stai usando nano, ad esempio, puoi fare ciò premendo
CTRL+X
, poiY
per confermare il salvataggio e infineEnter
per confermare il nome del file.
Esempi di Cron
Per aiutarti a capire meglio come impostare i cron, ecco alcuni esempi pratici:
- Esegui un comando ogni minuto: Per farlo, inseriresti
* * * * * comando
nel crontab. Il comando verrà eseguito ogni minuto. - Esegui uno script ogni giorno alle 2 del pomeriggio: Inserisci
0 14 * * * /percorso/allo/script.sh
nel crontab. Lo script verrà eseguito ogni giorno alle 14:00. - Esegui un comando il primo giorno di ogni mese: Inserisci
0 0 1 * * comando
nel crontab. Il comando verrà eseguito alle 00:00 del primo giorno di ogni mese. - Esegui un comando ogni lunedì alle 6 del mattino: Inserisci
0 6 * * 1 comando
nel crontab. Il comando verrà eseguito ogni lunedì alle 6:00. - Esegui uno script ogni 15 minuti: Inserisci
*/15 * * * * /percorso/allo/script.sh
nel crontab. Lo script verrà eseguito ogni 15 minuti. - Esegui un comando ogni ora: Inserisci
0 * * * * comando
nel crontab. Il comando verrà eseguito ogni ora. - Esegui un comando ogni mezz’ora: Inserisci
*/30 * * * * comando
nel crontab. Il comando verrà eseguito ogni mezz’ora. - Esegui uno script ogni due ore: Inserisci
0 */2 * * * /percorso/allo/script.sh
nel crontab. Lo script verrà eseguito ogni due ore. - Esegui un comando ogni giorno alle 8 del mattino e alle 8 di sera: Inserisci
0 8,20 * * * comando
nel crontab. Il comando verrà eseguito ogni giorno alle 8:00 e alle 20:00. - Esegui uno script il primo lunedì di ogni mese: Inserisci
0 0 * * 1 [ "$(date +\%m)" != "$(date +\%m -d '1 week')" ] && /percorso/allo/script.sh
nel crontab. Lo script verrà eseguito il primo lunedì di ogni mese. - Esegui un comando alle 10.30 del mattino ogni giorno: Inserisci
30 10 * * * comando
nel crontab. Il comando verrà eseguito ogni giorno alle 10:30. - Esegui uno script ogni 5 minuti durante l’orario lavorativo (9-17): Inserisci
*/5 9-17 * * * /percorso/allo/script.sh
nel crontab. Lo script verrà eseguito ogni 5 minuti durante l’orario lavorativo. - Esegui un comando ogni anno: Inserisci
0 0 1 1 * comando
nel crontab. Il comando verrà eseguito una volta all’anno, precisamente alle 00:00 del 1 gennaio. - Esegui uno script ogni 10 minuti durante il fine settimana: Inserisci
*/10 * * * 6,7 /percorso/allo/script.sh
nel crontab. Lo script verrà eseguito ogni 10 minuti durante il sabato e la domenica. - Esegui un comando ogni quarto d’ora dal lunedì al venerdì: Inserisci
*/15 * * * 1-5 comando
nel crontab. Il comando verrà eseguito ogni 15 minuti dal lunedì al venerdì. - Esegui uno script alle 3 del pomeriggio il primo giorno di primavera (21 marzo): Inserisci
0 15 21 3 * /percorso/allo/script.sh
nel crontab. Lo script verrà eseguito alle 15:00 del 21 marzo. - Esegui un comando ogni 5 ore: Inserisci
0 */5 * * * comando
nel crontab. Il comando verrà eseguito ogni 5 ore. - Esegui uno script ogni giorno alle 2 del pomeriggio, eccetto il fine settimana: Inserisci
0 14 * * 1-5 /percorso/allo/script.sh
nel crontab. Lo script verrà eseguito alle 14:00 dal lunedì al venerdì. - Esegui un comando ogni giorno alle 22:30: Inserisci
30 22 * * * comando
nel crontab. Il comando verrà eseguito ogni giorno alle 22:30. - Esegui uno script il 15 di ogni mese: Inserisci
0 0 15 * * /percorso/allo/script.sh
nel crontab. Lo script verrà eseguito il 15 di ogni mese alle 00:00.
Ricorda, cron è uno strumento potente, ma con grande potere viene anche una grande responsabilità. È importante verificare sempre due volte le impostazioni dei cron job per evitare potenziali problemi.
Cron per richiamare URL tramite curl o wget
Se sei un webmaster o gestisci un server web, potresti aver bisogno di eseguire operazioni programmate richiamando specifiche URL. Questo può essere particolarmente utile per l’automazione di processi come il polling di dati da un API, il trigger di operazioni di manutenzione, l’attivazione di backup o la pulizia di database. Il modo più comune per raggiungere quest’obiettivo è l’utilizzo delle utility `curl` o `wget`.
`Curl` e `wget` sono due comandi della riga di comando molto popolari nei sistemi Unix-like, utilizzati per il trasferimento di dati da o verso un server utilizzando vari protocolli di rete, tra cui HTTP, HTTPS, FTP e molti altri. Mentre `curl` è più potente e flessibile, `wget` è noto per la sua robustezza e la sua facilità d’uso, soprattutto quando si tratta di download ricorsivi.
Ecco cinque esempi di cron jobs che utilizzano curl
o wget
:
- Richiama un’URL ogni giorno alle 6 del mattino con curl: Inserisci
0 6 * * * curl http://miosito.com/operazione
nel crontab. Questo cron job richiamerà l’URL specificata ogni giorno alle 6:00. - Scarica un file ogni notte alle 2 con wget: Inserisci
0 2 * * * wget -O /percorso/al/file http://miosito.com/file.zip
nel crontab. Questo cron job scaricherà il file specificato e lo salverà nella posizione specificata ogni notte alle 2:00. - Richiama l’API di un servizio ogni ora con curl: Inserisci
0 * * * * curl https://api.mioservizio.com/update
nel crontab. Questo cron job richiamerà l’API specificata ogni ora. - Richiama il wp-cron.php di WordPress ogni 15 minuti con wget: Inserisci
*/15 * * * * wget -q -O - http://miosito.com/wp-cron.php?doing_wp_cron >/dev/null 2>&1
nel crontab. Questo cron job richiamerà il file wp-cron.php del tuo sito WordPress ogni 15 minuti. L’output sarà ignorato per evitare di riempire i log con informazioni inutili. - Scarica un elenco di file ogni giorno alle 5 del pomeriggio con wget: Inserisci
0 17 * * * wget -i http://miosito.com/lista-di-file.txt
nel crontab. Questo cron job scaricherà un elenco di file da un file di testo specificato ogni giorno alle 17:00.
Ricorda che sia curl
che wget
hanno molte opzioni e funzionalità; quindi, potrebbe essere utile consultare le relative pagine man per scoprire come personalizzare al meglio i tuoi cron jobs.