GNU/Linux >> Linux Esercitazione >  >> Linux

10 utili esempi di cron per pianificare i lavori in Linux

Il sistema GNU/Linux supporta diverse utilità per la pianificazione delle attività. L'utilità cron è la più ampiamente supportata. Consente di pianificare attività da eseguire in background a intervalli regolari. L'utilità cron utilizza una tabella (crontab) con un elenco di script o comandi da eseguire e l'ora in cui devono essere eseguiti.

Programmazione dei lavori

Gli utenti normali possono utilizzare il comando crontab per gestire i propri lavori. Questo comando può essere chiamato in quattro modi diversi:

Comando Funzione
crontab -l Elenca i lavori per l'utente corrente
crontab -r Rimuovi tutti i lavori per gli utenti correnti.
crontab -e Modifica lavori per l'utente corrente.
crontab [nome file] Rimuovi tutti i lavori e sostituiscili con i lavori letti da [nomefile]. Se non viene specificato alcun file, verrà utilizzato stdin.

Come modificare e visualizzare crontab

Quando si modificano i lavori con "crontab -e “, verrà avviato un editor (vi per impostazione predefinita. a meno che la variabile d'ambiente EDITOR non sia stata impostata su qualcosa di diverso). Il file in fase di modifica avrà un lavoro per riga. Sono consentite righe vuote e i commenti iniziano la loro riga con un cancelletto (#).

# crontab -e

Quando esegui il comando "crontab -e" senza alcuna opzione, il crontab dell'utente attualmente connesso verrà modificato per impostazione predefinita. Per modificare il crontab di un altro utente, puoi usare l'opzione -u con il comando crontab. Ad esempio, per modificare il crontab dell'utente john.

# crontab -u john -e

Allo stesso modo, per visualizzare il crontab dell'utente corrente, utilizzare "crontab -l comando ".

# crontab -l

E per elencare il crontab di un utente specifico, usa il comando seguente.

# crontab -u john -l

File di configurazione Cron

Il processo in background di cron è per lo più inattivo. Si sveglia una volta al minuto e controlla /etc/crontab, /etc/cron.d e i file della tabella cron dell'utente e determina se ci sono lavori che devono essere eseguiti.

La tabella seguente riassume lo scopo dei vari file e directory utilizzati da cron. La conoscenza di questi file e directory ti aiuterà a risolvere eventuali problemi e a comprendere cron in modo più dettagliato.

File Scopo
/etc/init.d/crond Avvia il daemon cron all'avvio del sistema.
/var/log/cron Messaggi di sistema relativi al processo cron. Utile per la risoluzione dei problemi.
/var/spool/cron/[nome utente] I file crontab degli utenti vengono archiviati nella directory/var/spool/cron.
/etc/cron.allow Specifica gli utenti che possono creare una tabella cron.
/etc/cron.deny Specifica gli utenti a cui non è consentito creare una tabella cron.
/etc/crontab La tabella cron di sistema che contiene i comandi per eseguire gli script che si trovano nelle seguenti directory: /etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly e /etc/cron.monthly.
/etc/cron.d Una directory che contiene tabelle cron per i lavori che devono essere eseguiti in base a una pianificazione diversa da quella oraria, giornaliera, settimanale o mensile.
/etc/cron.hourly Directory che contiene gli script di sistema da eseguire su base oraria.
/etc/cron.daily Directory che contiene gli script di sistema da eseguire quotidianamente.
/etc/cron.weekly Directory che contiene gli script di sistema da eseguire su base settimanale.
/etc/cron.monthly Directory che contiene gli script di sistema da eseguire su base mensile.

Sintassi Crontab

I lavori dei singoli utenti sono memorizzati nella directory /var/spool/cron nei file corrispondenti ai nomi utente. Questi file appartengono sempre all'utente root. I file in /var/spool/cron non vengono modificati direttamente. Invece, per manipolarli viene utilizzato un programma chiamato crontab. La figura seguente mostra la sintassi di un lavoro cron.

Ogni riga in un file definisce un lavoro. Ci sono 6 campi in una riga. I primi 5 campi definiscono l'ora, l'ultimo campo contiene il comando da eseguire. Questo può essere qualsiasi tipo di comando o script di shell. I primi 5 campi hanno il seguente formato:

Campo Gamma
Minuti 0-59
Ore 0-23
Giorno del mese 1-31
Mese 0-12
Giorno feriale 0-7

Esempio di lavori cron

1. Pianifica un lavoro il 2 febbraio di ogni anno

È necessario eseguire uno script di backup una volta all'anno in una data specifica nel mese di febbraio. La sintassi è mostrata di seguito.

0 9 2 2 *   /usr/local/bin/yearly_backup

2. Pianifica un lavoro ogni ora al quinto minuto, ogni giorno

Utilizzare il comando seguente per eseguire uno script ogni ora al quinto minuto, ogni giorno:

5 * * * *      $HOME/bin/daily.job >> $HOME/tmp/out  2>&1

3. Pianifica un lavoro 5 minuti dopo la mezzanotte ogni giorno

Utilizzare il comando seguente per eseguire 5 minuti dopo la mezzanotte ogni giorno:

5 0 * * *      $HOME/bin/daily.job >> $HOME/tmp/out  2>&1

4. Pianifica un lavoro a un'ora specifica il primo di ogni mese

Utilizzare il comando seguente per eseguire alle 14:15. il primo di ogni mese:

15 14 1 * * *     $HOME/bin/monthly

5. Pianifica un lavoro a un'ora specifica solo nei giorni feriali (escluso sabato e domenica)

Utilizzare il comando seguente per eseguire alle 22:00. nei giorni feriali:

0 22 * * 1-5  $HOME/bin/weekday.job >> $HOME/tmp/out  2>&1

6. Pianificazione di più lavori in un unico lavoro cron

Possiamo anche programmare più lavori in un singolo lavoro cron utilizzando un punto e virgola(;) lavori separati come mostrato di seguito:

0 12 * * * /var/tmp/script01.sh; /var/tmp/script02.sh

7. Utilizzo degli intervalli per specificare gli orari di inizio

Gli intervalli possono essere specificati tramite l'uso di un trattino. Un valore compreso tra 1 e 5 indica che questo campo è valido per i numeri da 1 a 5. Se si utilizza un nome anziché un numero, non è possibile specificare un intervallo. Di seguito è mostrato un esempio di specifica degli intervalli. Il lavoro dovrebbe essere eseguito ogni ora dalle 15:00. Alle 22:00

* 3-10 * * * /var/tmp/script.sh

8. Utilizzo dei valori di passaggio per specificare gli orari di inizio

I valori dei passi possono essere utilizzati insieme agli intervalli. Per specificare un valore di passaggio, segui l'intervallo con una barra (/) e un numero. Il numero specificato è il valore del passo. Ad esempio, quanto segue specifica che ogni terzo valore (in questo caso, 2, 5, 8 e 11) deve essere abbinato:

* 0-12/3 * * *  /var/tmp/script.sh

I valori di passaggio possono essere utilizzati anche con asterischi. Il valore */3 nel campo dell'ora corrisponderebbe ogni terza ora (0, 3, 6, 9, 12, 15, 18 e 21).

9. Utilizzo degli elenchi per specificare gli orari di inizio

Sono accettabili anche le liste; ogni elemento in un elenco è separato da una virgola. È comune utilizzare gli elenchi insieme agli intervalli, in questo modo:

1-15,31-45 * * * *  /var/tmp/script.sh

Questo esempio corrisponde a tutti i numeri (minuti nel nostro caso) da 1 a 15 e da 31 a 45. Se utilizzi un nome invece di un numero, non puoi specificare un elenco.

10. Pianifica un lavoro alle 4:45, il 1, 10 e 22 di ogni mese

Di seguito è riportato un esempio di esecuzione di un lavoro a un'ora specifica in alcuni giorni specifici del mese.

45 4 1,10,22 * * /apps/bin/backup.sh 

Macro di Crontab

Possiamo aggiungere macro nel file crontab. Ad esempio, utilizza quanto segue per riavviare "my_script" dopo ogni riavvio:

@reboot  /var/tmp/my_script

Di seguito è riportato un riepilogo di alcune altre macro:

Entrata Descrizione Equivalente a
@reboot Esegui una volta all'avvio Nessuno
@settimanale Esegui una volta alla settimana 0 0 * * 0
@giornaliero Esegui una volta al giorno 0 0 * * *
@mezzanotte (come @daily) 0 0 * * *
@hourly Esegui una volta all'ora 0 * * * *

Gestire l'output

Uno script spesso stampa qualcosa sullo schermo, per il debug, gli aggiornamenti di stato o per registrare un errore. Tutto ciò che un lavoro stampa sullo schermo viene inviato in un'e-mail all'utente corrente, che può essere sovrascritto con la variabile MAILTO all'interno del crontab.

# crontab -l
MAIL=john
0 2 * * * /apps/bin/backup.sh
Come pianificare i lavori con Cron in Linux
Definizione dei lavori di sistema utilizzando Cron in Linux
UNIX/Linux:come crontab convalida l'accesso in base ai file cron.allow e cron.deny
CentOS/RHEL :nozioni di base su anacron (Cos'è anacron e come configurarlo)
CentOS / RHEL :Guida per principianti a cron


Linux
  1. Come usare cron su Linux

  2. 12 utili esempi di comandi Wget in Linux

  3. ls Command in Linux:17 esempi utili spiegati

  4. Come pianificare i lavori Cron con Crontab

  5. 6 Esempi di comandi Linux Crontab

Spiegazione di Cron Jobs e Crontab su Linux

Capire Crontab in Linux con esempi

Comando Linux crontab per creare e gestire i lavori Cron

12 Esempi utili di comandi data di Linux

Linux Crontab:15 fantastici esempi di Cron Job

Come pianificare i lavori con Cron in Linux