A volte, potresti avere attività che devono essere eseguite su base regolare oa determinati intervalli predefiniti. Tali attività includono il backup dei database, l'aggiornamento del sistema, l'esecuzione di riavvii periodici e così via. Tali attività in Linux sono indicate come cron jobs (Crontab). I lavori Cron vengono utilizzati per l'automazione delle attività che tornano utili e aiutano a semplificare l'esecuzione di compiti ripetitivi e talvolta banali. Cron è un demone che consente di programmare questi lavori che vengono poi eseguiti a intervalli specificati. In questo tutorial imparerai come pianificare i lavori utilizzando i lavori cron.
Il file Crontab
Un file crontab, noto anche come tabella cron , è un semplice file di testo che contiene regole o comandi che specificano l'intervallo di tempo di esecuzione di un'attività. Esistono due categorie di file crontab:
1) File crontab a livello di sistema
Questi sono solitamente utilizzati dai servizi Linux e dalle applicazioni critiche che richiedono privilegi di root. Il file crontab di sistema si trova in /etc/crontab e sono accessibili e modificabili solo dall'utente root. Di solito viene utilizzato per la configurazione di demoni a livello di sistema. Il file crontab appare come mostrato:
2) File crontab creati dall'utente
Gli utenti Linux possono anche creare i propri lavori cron con l'aiuto del comando crontab. I lavori cron creati verranno eseguiti come l'utente che li ha creati.
Tutti i lavori cron sono archiviati in /var/spool/cron (per distribuzioni RHEL e CentOS) e /var/spool/cron/crontabs (per distribuzioni Debian e Ubuntu), i lavori cron sono elencati utilizzando il nome utente dell'utente che ha creato il cron lavoro
Il demone cron viene eseguito silenziosamente in background controllando /etc/crontab file e /var/spool/cron e /etc/cron.d*/ directory
Il crontab il comando viene utilizzato per modificare i file cron. Diamo un'occhiata all'anatomia di un file crontab.
L'anatomia di un file crontab
Prima di andare oltre, è importante esplorare come appare un file crontab. La sintassi di base per un file crontab comprende 5 colonne rappresentate da asterischi seguite dal comando da eseguire.
* * * * * comando
Questo formato può anche essere rappresentato come mostrato di seguito:
m h d moy dow comando
O
m h d moy dow /percorso/di/script
Esaminiamo ogni voce
- mi :Rappresenta i minuti. È specificato da 0 a 59
- h :Indica l'ora specificata da 0 a 23
- d : Rappresenta il giorno del mese. Specificato tra 1 e 31`
- Moy :Questo è il mese dell'anno. È specificato tra 1 e 12
- ciao : Questo è il giorno della settimana. È specificato tra 0 e 6 dove 0 =domenica
- Comando :Questo è il comando da eseguire, ad esempio comando di backup, riavvio e copia
Gestione dei lavori cron
Dopo aver esaminato l'architettura di un file crontab, vediamo come creare, modificare ed eliminare lavori cron
Creazione di lavori cron
Per creare o modificare un lavoro cron come utente root, esegui il comando
# crontab -e
Per creare un processo cron o pianificare un'attività come un altro utente, utilizza la sintassi
# crontab -u nome utente -e
Ad esempio, per eseguire un lavoro cron come utente Pradeep, emettere il comando:
# crontab -u Pradeep -e
Se non esiste un file crontab preesistente, otterrai un documento di testo vuoto. Se esisteva un file crontab, l'opzione -e consente di modificare il file,
Elenco dei file crontab
Per visualizzare i lavori cron che sono stati creati, passa semplicemente l'opzione -l come mostrato
# crontab -l
Eliminazione di un file crontab
Per eliminare un file cron, esegui semplicemente crontab -e ed elimina o la riga del lavoro cron che desideri e salva il file.
Per rimuovere tutti i processi cron, esegui il comando:
# crontab -r
Detto questo, diamo un'occhiata ai diversi modi in cui puoi pianificare le attività
Esempi di Crontab nelle attività di pianificazione.
Tutti i lavori cron sono con un'intestazione shebang come mostrato
#!/bin/bash
Questo indica la shell che stai usando, che, in questo caso, è bash shell.
Quindi, specifica l'intervallo in cui desideri pianificare le attività utilizzando le voci del processo cron che abbiamo specificato in precedenza.
Per riavviare un sistema ogni giorno alle 12:30, utilizzare la sintassi:
30 12 * * * /sbin/reboot
Per programmare il riavvio alle 4:00 utilizzare la sintassi:
0 4 * * * /sbin/reboot
NOTA: L'asterisco * viene utilizzato per abbinare tutti i record
Per eseguire uno script due volte al giorno, ad esempio alle 4:00 e alle 16:00, utilizza la sintassi.
0 4,16 * * * /percorso/per/script
Per pianificare l'esecuzione di un processo cron ogni venerdì alle 17:00 utilizza la sintassi:
0 17 * * Ven /percorso/di/script
O
0 17 * * * 5 /percorso/per/script
Se desideri eseguire il tuo lavoro cron ogni 30 minuti, usa:
*/30 * * * * /percorso/per/script
Per programmare l'esecuzione di cron ogni 5 ore, esegui
* */5 * * * /percorso/per/script
Per eseguire uno script in giorni selezionati, ad esempio mercoledì e venerdì alle 18:00, eseguire:
0 18 * * mer,ven /percorso/di/script
Per pianificare più attività per l'utilizzo di un singolo processo cron, separa le attività utilizzando un punto e virgola, ad esempio:
* * * * * /percorso/a/script1; /percorso/di/script2
Utilizzo di stringhe speciali per risparmiare tempo nella scrittura di lavori cron
Alcuni dei lavori cron possono essere facilmente configurati utilizzando stringhe speciali che corrispondono a determinati intervalli di tempo. Ad esempio,
1) @ timestamp orario corrisponde a 0 * * * *
Eseguirà un'attività nel primo minuto di ogni ora.
@oraria /percorso/per/script
2) @daily timestamp equivale a 0 0 * * *
Esegue un'attività nel primo minuto di ogni giorno (mezzanotte). È utile quando si eseguono lavori quotidiani.
@daily /percorso/per/script
3) Il timestamp @weekly equivale a 0 0 1 * lun
Esegue un processo cron nel primo minuto di ogni settimana, in cui una settimana inizia di lunedì.
@weekly /percorso/per/script
3) @monthly è simile alla voce 0 0 1 * *
Svolge un compito nel primo minuto del primo giorno del mese.
@mensile /percorso/per/script
4) @annuale corrisponde a 0 0 1 1 *
Esegue un compito nel primo minuto di ogni anno ed è utile per inviare gli auguri di Capodanno 🙂
@mensile /percorso/per/script
Restrizioni Crontab
Come utente Linux, puoi controllare chi ha il diritto di usare il comando crontab. Questo è possibile usando /etc/cron.deny e /etc/cron.allow file. Per impostazione predefinita, esiste solo il file /etc/cron.deny e non contiene alcuna voce. Per impedire a un utente di utilizzare l'utilità crontab, aggiungi semplicemente il nome utente di un utente al file. Quando un utente viene aggiunto a questo file e l'utente tenta di eseguire il comando crontab, incontrerà l'errore di seguito.
Per consentire all'utente di continuare a utilizzare l'utilità crontab, rimuovi semplicemente il nome utente dal file /etc/cron.deny.
Se è presente il file /etc/cron.allow, solo gli utenti elencati nel file possono accedere e utilizzare l'utilità crontab.
Se nessuno dei due file esiste, solo l'utente root avrà i privilegi per usare il comando crontab.
Backup delle voci crontab
Si consiglia sempre di eseguire il backup delle voci di crontab. Per farlo, usa la sintassi
# crontab -l> /percorso/del/file.txt
Ad esempio,
# crontab -l > /home/james/backup.txt
Controllo dei log di cron
I registri cron sono archiviati nel file /var/log/cron. Per visualizzare i log di cron eseguire il comando:
# cat /var/log/cron
Per visualizzare i log in tempo reale, usa il comando tail come mostrato:
# tail -f /var/log/cron
Conclusione
In questa guida, hai imparato come creare processi cron per automatizzare attività ripetitive, come eseguire il backup e come visualizzare i registri cron. Ci auguriamo che questo articolo abbia fornito informazioni utili per quanto riguarda i lavori cron. Non esitare a condividere feedback e commenti.