Se lavori nel settore IT, potrebbe essere necessario pianificare varie attività ripetitive come parte dei processi di automazione.
Ad esempio, è possibile pianificare l'esecuzione periodica di un determinato lavoro in orari specifici della giornata. Ciò è utile per eseguire backup giornalieri, archiviazione di registri mensili, eliminazione settimanale di file per creare spazio e così via.
E se usi Linux come sistema operativo, utilizzerai qualcosa chiamato cron job per farlo accadere.
Cos'è un cron?
Cron è un'utilità di pianificazione dei lavori presente in sistemi simili a Unix. Il demone crond abilita la funzionalità cron e viene eseguito in background. Il cron legge il crontab (tabelle cron) per eseguire script predefiniti.
Utilizzando una sintassi specifica, puoi configurare un processo cron per pianificare script o altri comandi da eseguire automaticamente.
Per i singoli utenti, il servizio cron controlla il seguente file:/var/spool/cron /crontabs
Cosa sono i lavori cron in Linux?
Qualsiasi attività pianificata tramite cron è chiamata cron job. I lavori Cron ci aiutano ad automatizzare le nostre attività di routine, siano esse orarie, giornaliere, mensili o annuali.
Ora, vediamo come funzionano i lavori cron.
Come controllare l'accesso ai crons
Per utilizzare i lavori cron, un amministratore deve consentire l'aggiunta di lavori cron per gli utenti nel file '/etc/cron.allow'.
Se ricevi un messaggio come questo, significa che non hai il permesso per usare cron.
Per consentire a John di usare crons, includi il suo nome in '/etc/cron.allow'. Ciò consentirà a John di creare e modificare lavori cron.
Agli utenti può anche essere negato l'accesso all'accesso al lavoro cron inserendo i loro nomi utente nel file '/etc/cron.d/cron.deny'.
Come aggiungere lavori cron in Linux
Innanzitutto, per utilizzare i lavori cron, dovrai controllare lo stato del servizio cron. Se cron non è installato, puoi scaricarlo facilmente tramite il gestore pacchetti. Usa questo per controllare:
# Check cron service on Linux system
sudo systemctl status cron.service
Sintassi del lavoro Cron
Crontabs utilizza i seguenti flag per aggiungere ed elencare i lavori cron.
crontab -e
:modifica le voci crontab per aggiungere, eliminare o modificare i lavori cron.crontab -l
:elenca tutti i lavori cron per l'utente corrente.crontab -u username -l
: elenca i cron di un altro utente.crontab -u username -e
: modifica i cron di un altro utente.
Quando elenchi i cron, vedrai qualcosa del genere:
# Cron job example
* * * * * sh /path/to/script.sh
Nell'esempio sopra,
- * * * * * rappresenta rispettivamente minuto/i ora/i giorno/i mese/i giorno/i della settimana.
Valore | Descrizione | |
---|---|---|
Minuti | 0-59 | Il comando verrebbe eseguito al minuto specifico. |
Ore | 0-23 | Il comando verrebbe eseguito all'ora specifica. |
Giorni | 1-31 | I comandi verrebbero eseguiti in questi giorni dei mesi. |
Mesi | 1-12 | Il mese in cui devono essere eseguite le attività. |
Giorni feriali | 0-6 | Giorni della settimana in cui verrebbero eseguiti i comandi. Qui, 0 è domenica. |
sh
rappresenta che lo script è uno script bash e deve essere eseguito da/bin/bash
./path/to/script.sh
specifica il percorso dello script.
Di seguito è riportato il riepilogo della sintassi del lavoro cron.
* * * * * sh /path/to/script/script.sh
| | | | | |
| | | | | Command or Script to Execute
| | | | |
| | | | |
| | | | |
| | | | Day of the Week(0-6)
| | | |
| | | Month of the Year(1-12)
| | |
| | Day of the Month(1-31)
| |
| Hour(0-23)
|
Min(0-59)
Esempi di lavoro Cron
Di seguito sono riportati alcuni esempi di pianificazione dei lavori cron.
Programma | Valore programmato |
---|---|
5 0 * 8 * | Alle 00:05 di agosto. |
5 4 * * 6 | Alle 04:05 di domenica. |
0 22 * * 1-5 | Alle 22:00 di tutti i giorni della settimana dal lunedì al venerdì. |
Va bene se non sei in grado di capirlo tutto in una volta. Puoi esercitarti e generare pianificazioni cron con il crontab guru.
Come impostare un lavoro cron
In questa sezione, esamineremo un esempio di come pianificare un semplice script con un processo cron.
- Crea uno script chiamato
date-script.sh
che stampa la data e l'ora del sistema e la aggiunge a un file. Lo script è mostrato di seguito:
2. Rendi eseguibile lo script assegnandogli i diritti di esecuzione.
chmod 775 date-script.sh
3. Aggiungi lo script nel crontab usando crontab -e
.
Qui, abbiamo programmato che venga eseguito al minuto.
4. Controllare l'output del file date-out.txt
. Secondo lo script, la data di sistema dovrebbe essere stampata su questo file ogni minuto.
Come risolvere i problemi dei cron
I Cron sono davvero utili, ma potrebbero non funzionare sempre come previsto. Fortunatamente, ci sono alcuni metodi efficaci che puoi usare per risolverli.
- Controlla il programma.
Innanzitutto, puoi provare a verificare la pianificazione impostata per il cron. Puoi farlo con la sintassi che hai visto nelle sezioni precedenti.
2. Controlla i log di cron.
Per prima cosa devi verificare se il cron è stato eseguito all'ora prevista o meno. Puoi verificarlo dai registri cron che si trovano in var/log/cron
. In alcune distribuzioni, i log possono essere trovati in /var/log/syslog
Se c'è una voce in questi log al momento giusto, significa che il cron è stato eseguito secondo la pianificazione che hai impostato.
Di seguito sono riportati i registri del nostro esempio di lavoro cron. Nota la prima colonna che mostra il timestamp. Il percorso dello script è menzionato anche alla fine della riga.
Puoi reindirizzare l'output di un cron su un file e controllare il file per eventuali errori.
# Redirect cron output to a file
* * * * * sh /path/to/script.sh &> log_file.log
Conclusione
L'automazione delle attività, come con i lavori cron, riduce il lavoro ripetitivo che devi eseguire. Consente inoltre alle macchine di ripararsi automaticamente e lavorare 24 ore su 24 senza l'intervento umano.
L'automazione in Linux si basa fortemente sui lavori cron, quindi dovresti assolutamente imparare cron e sperimentarli.
Grazie per aver letto fino alla fine. Il feedback è sempre il benvenuto.
Se hai trovato utile questo articolo, condividilo con i tuoi amici.
Connettiamoci su Twitter!