Crontab in Linux – con esempi e strumenti in tempo reale

Esploriamo crontab, i suoi comandi e le varie operazioni associate a Crontab.

Impareremo come pianificare le attività utilizzando l’utilità cron e, infine, discuteremo anche di alcuni degli strumenti online che ci aiutano con la formattazione e il test dei comandi cron.

Sommario:

Origine

Crontab sta per “cron table”. La parola cron è stata presa dalla parola greca Chronos che significa tempo. Crontab è un processo daemon di sistema che eseguirà automaticamente alcune attività e lavori secondo l’orario pianificato.

  Come giocare a Bayonetta su Linux

Casi d’uso

Crontab è utile per eseguire varie operazioni come la gestione del backup automatico, la rotazione dei file di registro, la sincronizzazione di file tra macchine remote e la cancellazione di cartelle temporanee, ecc. Crontab può essere utilizzato per qualsiasi tipo di lavoro, ma diventa particolarmente utile quando iniziamo a occuparci di tipo di lavoro di amministrazione del sistema.

Utilizzando cron, un amministratore può pianificare l’esecuzione di un lavoro in un’ora e in un giorno specifici.

Quindi vediamo come possiamo configurarlo.

Sintassi Crontab

Per eseguire un elenco di comandi, l’utilità cron legge i file di configurazione. Per interpretare le righe nelle tabelle di configurazione crontab, segue una sintassi Crontab. Crontab ha sei campi e i primi cinque campi (1-5) definiscono la data e l’ora di esecuzione. L’ultimo campo, cioè il 6° campo, potrebbe essere un nome utente e/o un’attività /lavoro/comando/script da eseguire.

* * * * * USER_NAME COMANDO/SCRIPT DA ESEGUIRE

│ │ │ │ │
│ │ │ │ │
│ │ │ │ |_________ Giorno della settimana (0 – 6) (0 è domenica, o usa i nomi)
│ │ │ |____________ Mese (1 – 12),* significa ogni mese
│ │ |______________ Giorno del mese (1 – 31),* significa ogni giorno
│ |________________ Ora (0 – 23),* indica ogni ora
|___________________ Minuto (0 – 59), * indica ogni minuto

Appunti:

  • Asterisco
  • viene utilizzato per abbinare tutti i valori possibili per un campo. Ad esempio, un asterisco utilizzato nel campo dell’ora sarebbe equivalente a ogni ora o un asterisco nel campo del mese sarebbe equivalente a ogni mese.

il nome utente è facoltativo (disponibile solo se è il file crontab di sistema)

Esempi:

Comprendiamo la sintassi sopra con alcuni esempi

0 5 * * * /scripts/job.sh

1. Pianifica un cron da eseguire alle 5 del mattino ogni giorno

0 6,18 * * * /scripts/job.sh

2. Pianifica l’esecuzione di un cron due volte al giorno alle 6:00 e alle 18:00

* * * * * /scripts/job.sh

3. Pianifica un cron da eseguire ogni minuto

0 19 * * mon /scripts/job.sh

4. Pianifica un cron da eseguire ogni lunedì alle 19:00.

*/10 * * * * /scripts/job.sh

5. Pianifica un cron da eseguire ogni 15 minuti.

* * * feb,jun,oct * /script/job.sh

6. Pianifica un cron da eseguire nei mesi selezionati

25 7 4 3 * /home/script/backup.sh

7. Eseguire lo script della shell /home/script/backup.sh il 4 marzo alle 7:25

8. Pianifica un cron da eseguire ogni 30 secondi

  • Dal momento che non abbiamo il controllo sui secondi nel Crontab, possiamo ottenerlo attraverso il processo in due passaggi seguente.
* * * * * /home/scripts/script.sh
  • Per prima cosa pianifichiamo un’attività che viene eseguita ogni minuto.
* * * * * sleep 30; /home/scripts/script.sh

Ora usiamo il comando sleep per mettere in pausa l’esecuzione per 30 secondi.

L’attività precedente interromperà l’esecuzione per 30 secondi e riprenderà di nuovo.

Tipo di file di configurazione di Cron

Esistono due tipi di file di configurazione di Cron:

  Come registrare il tuo desktop Linux in Wayland

Il sistema UNIX/Linux Crontab

Ciò richiede il privilegio di root perché di solito viene utilizzato per servizi di sistema e lavori critici. Il sesto campo (nella descrizione della sintassi precedente) è il nome di un utente per l’esecuzione del comando come. Dà la possibilità al crontab di sistema di eseguire comandi come qualsiasi utente.

L’utente Crontab

Un utente può anche installare i propri lavori cron usando il comando crontab. Anche qui, il sesto campo (nella descrizione della sintassi sopra) è il comando da eseguire e tutti i comandi vengono eseguiti come l’utente che ha creato crontab. Ogni utente può avere il proprio file crontab e, sebbene questi siano file in /var/spool/cron/crontabs, non sono pensati per essere modificati direttamente. Dobbiamo usare il comando crontab per modificare o impostare i nostri lavori cron.

Come funziona? Il servizio cron (daemon) viene eseguito in background e controlla costantemente (ogni minuto) il file /etc/crontab e le directory /etc/cron.*/. Controlla anche la directory /var/spool/cron/. I comandi vengono eseguiti da cron

quando i campi dei minuti, dell’ora e del mese corrispondono all’ora corrente e almeno uno dei campi di due giorni (giorno del mese o giorno della settimana) corrisponde al giorno corrente.

Comandi di base

Elenco dei lavori Cron esistenti

crontab -l

Possiamo elencare tutti i lavori Cron senza aprire il file di configurazione crontab usando il comando seguente

[[email protected] ~]# crontab -l
no crontab for winadmin.it
[[email protected] ~]#

Se non esiste un lavoro esistente, restituirà l’output come

[[email protected] ~]# crontab -l
# Edit this file to introduce tasks to be run by cron.
#
# Each task to run has to be defined through a single line
# indicating with different fields when the task will be run
# and what command to run for the task
#
# To define the time you can provide concrete values for
# minute (m), hour (h), day of month (dom), month (mon),
# and day of week (dow) or use '*' in these fields (for 'any').#
# Notice that tasks will be started based on the cron's system
# daemon's notion of time and timezones.
#
# Output of the crontab jobs (including errors) is sent through
# email to the user the crontab file belongs to (unless redirected).
#
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
#
# For more information see the manual pages of crontab(5) and cron(8)
#
# m h  dom mon dow   command
0 */1 * * * /home/account/scripts/updateAccountStatuses.sh
0 */1 * * * /home/account/scripts/reActivateAccountStatus.sh
[[email protected] ~]#

Se l’utente ha già aggiunto alcuni dei lavori, verrà visualizzato come segue.

La tabella cron è specifica dell’utente, il che significa che è necessario aver effettuato l’accesso con un utente specifico per visualizzare l’elenco della tabella cron.

Elenca Cron per utente particolare

Per elencare i lavori pianificati di un altro utente, utilizzare l’opzione come -u (Utente) e -l (Elenco).

crontab -u altro_nomeutente -l

Esempio: crontab -u winadmin.it -l

Aggiungi/Modifica voci Crontab

Per modificare la voce crontab, possiamo usare l’opzione -e come mostrato di seguito.

  Come installare SolveSpace su Linux

crontab -e

Il comando precedente aprirà gli editor vi in ​​cui specifichi i dettagli del lavoro e salvi il file. Una volta salvato, puoi verificare se cron è configurato o meno con crontab -l.

Aggiungi/Modifica voci Crontab per utenti particolari

crontab -u another_username -e

Possiamo modificare crontab per un altro utente usando il comando seguente

Esempio: crontab -u winadmin.it -e

Rimuovere la voce Crontab

Usa il parametro -r con Crontab per rimuovere i lavori pianificati completi senza conferma da crontab

crontab -r

crontab -i -r
[[email protected] ~]# crontab -i -r
crontab: really delete winadmin.it's crontab?

Se desideri una conferma prima di eliminare i lavori pianificati, utilizza l’opzione -i con -r, che richiederà una conferma all’utente prima di eliminare il crontab dell’utente.

Corda speciale Crontab

Oltre alla sintassi di cui sopra di cui abbiamo discusso, possiamo anche utilizzare otto stringhe speciali fornite da Crontab. Non solo ci farà risparmiare tempo, ma migliorerà anche la leggibilità.
Stringa speciale
Descrizione
@riavviare
Esegui una volta, dopo l’avvio.
@annuale
Esegui una volta all’anno, ovvero 0 0 1 1 *
@annualmente
Come @annuale
@mensile
Esegui una volta al mese, ovvero 0 0 1 * *
@settimanalmente
Esegui una volta alla settimana, ovvero 0 0 * * 0
@quotidiano
Esegui una volta al giorno, ovvero 0 0 * * *
@mezzanotte
Come @giornaliero
@ogni ora

Esegui una volta all’ora, ovvero 0 * * * *

Esempi di stringhe speciali Crontab

1. Crontab per pianificare le attività su base annuale

@annuale /scripts/greeting.sh

Possiamo eseguire sopra uno per l’invio di un augurio di Capodanno, verrà eseguito al primo minuto di ogni anno.

2. Crontab per pianificare le attività da eseguire su base mensile.

@monthly /scripts/cleanup.sh

Possiamo eseguire quanto sopra per eseguire alcune attività di pulizia all’inizio di ogni mese.

Allo stesso modo, possiamo usare altre stringhe speciali Crontab per scopi settimanali, giornalieri e orari.

Directory Cron

  • L’amministratore di sistema può utilizzare una pianificazione cron a livello di sistema che rientra nella directory cron predefinita come mostrato di seguito
  • /etc/cron.d
  • /etc/cron.giornaliero
  • /etc/cron.ogni ora
  • /etc/cron.mensile

/etc/cron.settimanale

Esempi in tempo reale di Crontab

Discutiamo alcuni degli esempi in tempo reale che solitamente utilizzano un amministratore di sistema o professionisti IT.

Elimina file e directory vuoti

45 0 * * * winadmin.it trova /tmp -type f -empty -delete

Sopra l’espressione cron troverà i file e la directory vuoti dalla directory /tmp e li cancellerà. Questo processo verrà eseguito alle 00:45 su base giornaliera. Dobbiamo menzionare il nome utente per eseguire questo lavoro. Nell’esempio sopra, l’utente winadmin.it sta eseguendo un’operazione di lavoro cron.

Esegui più attività utilizzando un singolo cron

* * * * * /home/scripts/backup.sh; /home/script/scritp.sh

Più attività/lavori possono essere separati utilizzando un punto e virgola(;) e possono essere assegnati a una singola espressione cron.

Strumenti di formattazione e test di Cron

Finora abbiamo discusso dei comandi e della sintassi di crontab per pianificare un’attività. Ma cosa succede se non sei un amministratore di sistema e il tuo lavoro non è quello di configurare Cron regolarmente, potrebbe non essere possibile ricordare la sintassi e si apre la stanza per errori. Non preoccuparti, abbiamo una soluzione a questo problema.

Ci sono diversi strumenti di formattazione Cron disponibili online.

# 1. Generatore di lavori Cron Generatore di Cron Job

è una GUI molto intuitiva in cui è possibile specificare i minuti, i giorni e il percorso dello script per generare crontab.

Prendiamo un esempio in tempo reale in cui devo eseguire /home/processMonitor.sh ogni 5 minuti dal lunedì al venerdì.

Quindi, ho ottenuto la sintassi Cron sottostante che posso inserire nel mio crontab eseguendo
crontab – e

0,5,10,15,20,25,30,35,40,45,50,55 * * * 1-5 /home/processMonitor.sh

# 2. Easycron Easycron

è un utile programmatore di lavori cron basato sul web. Possiamo creare un lavoro cron specificando un URL da chiamare, possiamo impostare l’ora in cui dovrebbe essere eseguito. Possiamo anche specificare un’espressione cron o aggiungerla manualmente da un modulo descrittivo. È importante sottolineare che possiamo utilizzare facoltativamente l’autenticazione HTTP di base per un piccolo livello di sicurezza.

Non solo questo, ma Easycron può anche essere utilizzato per raggiungere altri scopi come l’espressione Cron standard, i registri di esecuzione dei processi Cron, le notifiche e-mail, i registri degli errori separati, ecc.

# 3. Generatore di Crontab Generatore Crontab

è un altro strumento utile per generare crontab e con questo strumento puoi anche aggiungere se vuoi salvare l’output di cron nel file o inviarlo via e-mail.

# 4. Crontab Guru Crontab Guru

è un semplice editor di espressioni di pianificazione cron online. Inoltre, fornisce un mezzo utile per monitorare il tuo cronjob. Tutto quello che dobbiamo fare è copiare un comando fornito e aggiungerlo alla fine della definizione di crontab. Nel caso in cui il processo cron fallisse o non si avviasse, riceverai un’e-mail di avviso.

Nell’esempio seguente, Job verrà eseguito alle 04:05, ogni giorno, ogni mese e ogni settimana.

# 5. Tester CRON Tester CRON

ci consente di testare le definizioni di ora/data di cron. Potrebbe esserci una situazione in cui dobbiamo decodificare la sintassi cron esistente per la risoluzione dei problemi o semplicemente vogliamo fare un test.

Per farlo, possiamo usare questo strumento. Tutto quello che dobbiamo fare è copiare e incollare la nostra espressione cron nel campo di definizione cron, quindi scegliere il numero di iterazioni e fare clic su Test per vedere le varie date in cui verrà eseguito.

Controlliamo una delle nostre espressioni cron 4 3 */2 * *che dovrebbe essere eseguita alle 03:04 (AM) ogni due giorni. Verifichiamolo con cron tester.

Conclusione Spero che quanto sopra ti aiuti a comprendere meglio Crontab e impostare i lavori cron. La pianificazione dei lavori tramite Cron è una delle tante attività eseguite da Linux Admin. Se sei interessato ad apprendere le abilità avanzate, dai un’occhiata a questocorso

.