Articolo originale: How to Automate Tasks with cron Jobs in Linux
Se ti occupi di tecnologia dell'informazione, potresti avere bisogno di pianificare diverse attività ripetitive come parte dei tuoi processi di automazione.
Per esempio potresti pianificare una certa attività in modo che sia eseguita periodicamente a uno specifico orario del giorno. Questo è utile per eseguire backup giornalieri, archiviazione mensile dei log, eliminazione settimanale di file per creare spazio e così via.
Se Linux è il tuo sistema operativo, userai quello che viene chiamato "cron job" per pianificare un'attività.
Cos'è cron?
Cron è una utilità di pianificazione di attività presente nei sistemi tipo Unix. Il demone crond abilita le funzionalità e viene eseguito in background. Cron legge la crontab (tabella di cron) per eseguire script predefiniti.
Con l'utilizzo di una sintassi specifica puoi configurare un cron job per pianificare degli script o altri comandi affinché vengano eseguiti automaticamente.
Per ciascun utente, il servizio cron verifica il file /var/spool/cron/crontabs/<username>
Cosa sono i cron job in Linux?
Qualsiasi attività che tu pianifichi tramite cron viene detta cron job. I cron job ci aiutano ad automatizzare le nostre attività di routine, siano esse orarie, giornaliere, mensili o annuali.
Vediamo come funzionano i cron job.
Come controllare l'accesso a cron
Per usare i cron job, un amministratore deve fare in modo che essi possano essere aggiunti per gli utenti nel file /etc/cron.allow
.
Se esegui il comando crontab -e
e ottieni un prompt tipo il seguente, vuol dire che non hai i permessi per usare cron.
Per fare in modo che l'utente con username john possa usare cron, occorre includere il suo username nel file /etc/cron.allow
. Questo farà sì che l'utente possa creare e modificare i cron job.
È anche possibile impedire agli utenti l'accesso ai cron job inserendo i loro username nel file /etc/cron.d/cron.deny
.
Come aggiungere cron job in Linux
Innanzitutto, per usare i cron job, devi verificare lo stato del servizio cron. Se cron non è installato, puoi scaricarlo facilmente tramite il gestore di pacchetti della tua distribuzione. Usa questo comando per verificare:
# Verifica del servizio cron su sistema Linux
sudo systemctl status cron.service
Sintassi di crontab
Si utilizza il comando crontab
per gestire i cron job con le seguenti opzioni:
crontab -e
: consente di aggiungere, modificare, cancellare i cron job in tabella.crontab -l
: elenca i cron job dell'utente corrente.crontab -u username -l
: elenca i cron job dell'utenteusername
(necessario essereroot
).crontab -u username -e
: modifica i cron job dell'utenteusername
(necessario essereroot
).
Quando elenchi i cron job vedrai qualcosa di simile:
# Cron job example
* * * * * sh /path/to/script.sh
Nell'esempio qui sopra:
- gli asterischi
* * * * *
rappresentano rispettivamente minuto(i), ora(e), giorno(i), mese(i), giorno(i) della settimana.
VALORE | DESCRIZIONE | |
---|---|---|
Minuti | 0-59 | Il comando sarà eseguito al minuto specificato. |
Ore | 0-23 | Il comando sarà eseguito all'ora specificata. |
Giorni | 1-31 | Il comando sarà eseguito in questi giorni di ogni mese. |
Mesi | 1-12 | I mesi nei quali saranno eseguite le attività. |
Giorni della settimana | 0-6 | Giorni della settimana nei quali sarà eseguita l'attività. Qui 0 è domenica |
sh
indica che si tratta di uno script bash e dovrebbe esser eseguito da/bin/bash
./path/to/script.sh
specifica il percorso dello script.
Di seguito un riassunto della sintassi di un cron job.
* * * * * sh /percorso/allo/script/script.sh
| | | | | |
| | | | | Comando o Script da Eseguire
| | | | |
| | | | |
| | | | |
| | | | Giorno della settimana (0-6)
| | | |
| | | Mese dell'anno(1-12)
| | |
| | Giorno del mese(1-31)
| |
| Ora(0-23)
|
Minuto(0-59)
Esempi di cron job
Ecco alcuni esempi di pianificazione di cron job.
PIANIFICAZIONE | VALORE PIANIFICATO |
---|---|
5 0 * 8 * |
Alle 00:05 in Agosto. |
5 4 * * 6 |
Alle 04:05 di Sabato. |
0 22 * * 1-5 |
Alle 22:00 di ogni giorno della settimana, da lunedì a venerdì. |
Va bene se non riesci ad afferrare questo tutto in una volta. Puoi esercitarti e generare job pianificati con crontab guru, un sito che offre un editor semplificato per generare cron job.
Come impostare un cron job
In questa sezione daremo un'occhiata a un esempio di come pianificare un semplice script con un cron job.
- Crea uno script chiamato
date-script.sh
che stampa la data e l'ora di sistema e la accoda a un file. Il contenuto dello script è il seguente:
2. Rendi lo script eseguibile dandogli i permessi di esecuzione:
chmod 775 date-script.sh
3. Aggiungi lo script alla tabella di crontab usando crontab -e
.
In questo caso lo abbiamo pianificato per essere eseguito ogni minuto.
4. Verifica il contenuto del file date-out.txt
. In base allo script, la data di sistema dovrebbe essere scritta nel file ogni minuto.
Come risolvere i problemi con i cron job
I cron job sono davvero utili, ma potrebbero non funzionare sempre come previsto. Per fortuna ci sono metodi efficaci che puoi usare per risolvere eventuali problemi.
- Verifica la pianificazione
Per prima cosa cerca di verificare la pianificazione impostata per il cron job. Puoi farlo verificando la sintassi che hai visto nelle sezioni precedenti.
2. Verifica i log di cron
Dovresti innanzitutto verificare se il cron job è stato eseguito all'orario prestabilito oppure no. Puoi farlo consultando il file di log var/log/cron
, oppure /var/log/syslog
, a seconda della distribuzione di Linux, dove sono registrate, tra l'altro, le esecuzioni dei comandi dei cron job.
Se esiste una voce in questo log all'orario corretto, vuol dire che il cron job è stato eseguito come pianificato.
Di seguito, dei log relativi al nostro esempio di cron job. Nota la prima colonna che mostra la marca temporale. Il percorso dello script è registrato alla fine della riga.
3. Dirottare il risultato del comando di un cron job a un file
Puoi dirottare il risultato del comando di un cron job in un file e verificare questo file per possibili errori.
# Dirotta il risultato del comando eseguito dal cron job a un file
* * * * * sh /path/to/script.sh &> log_file.log
Riepilogo
L'automazione delle attività tramite i cron job riduce il lavoro ripetitivo che devi fare. Consente anche alle macchine di curare se stesse e lavorare 24 ora su 24 senza l'intervento umano.
L'automazione in Linux si affida pesantemente ai cron job, quindi dovresti sicuramente imparare a gestirli e sperimentare con essi.
Grazie per avere letto fino in fondo. Un feedback è sempre bene accetto.
Se hai trovato utile questo articolo, condividilo con i tuoi amici.
Connettiamoci su Twitter!