GNU/Linux >> Linux Esercitazione >  >> Linux

Linux Crontab:15 fantastici esempi di Cron Job

Un amministratore di sistema Linux esperto conosce l'importanza di eseguire automaticamente i lavori di manutenzione di routine in background.

L'utility Linux Cron è un modo efficace per pianificare un lavoro in background di routine a un'ora e/o un giorno specifici su base continuativa.

Questo articolo fa parte della serie in corso Productivity Tips For Geeks. In questo articolo, esaminiamo 15 fantastici esempi di pianificazione dei lavori crontab.

Formato Linux Crontab

MIN HOUR DOM MON DOW CMD
Tabella:campi Crontab e intervalli consentiti (sintassi Crontab Linux)
Campo Descrizione Valore consentito
MIN Campo dei minuti da 0 a 59
ORA Campo dell'ora da 0 a 23
DOM Giorno del mese 1-31
LUN Campo mese 1-12
DOW Giorno della settimana 0-6
CMD Comando Qualsiasi comando da eseguire.

1. Programmazione di un lavoro per un periodo specifico

L'utilizzo di base di cron è eseguire un lavoro in un momento specifico, come mostrato di seguito. Verrà eseguito lo script della shell di backup completo (backup completo) il 10 giugno alle 08:30 .

Tieni presente che il campo dell'ora utilizza il formato 24 ore. Quindi, per le 8:00 usa 8 e per le 20:00 usa 20.

30 08 10 06 * /home/ramesh/full-backup
  • 30 – 30° Minuto
  • 08 – 08:00
  • 10 – 10° giorno
  • 06 – 6° mese (giugno)
  • * – Tutti i giorni della settimana

2. Pianifica un lavoro per più di un'istanza (ad es. due volte al giorno)

Il seguente script esegue un backup incrementale due volte al giorno ogni giorno.

Questo esempio esegue lo script della shell di backup incrementale specificato (backup incrementale) ogni giorno alle 11:00 e alle 16:00. Il valore separato da virgole in un campo specifica che il comando deve essere eseguito in tutto il tempo indicato.

00 11,16 * * * /home/ramesh/bin/incremental-backup
  • 00 – 0° minuto (inizio dell'ora)
  • 11,16 – 11:00 e 16:00
  • * – Tutti i giorni
  • * – Ogni mese
  • * – Tutti i giorni della settimana

3. Pianifica un lavoro per un intervallo di tempo specifico (ad es. Solo nei giorni feriali)

Se desideri che un lavoro venga pianificato per ogni ora in un intervallo di tempo specifico, utilizza quanto segue.

Cron Job tutti i giorni durante l'orario di lavoro

Questo esempio controlla lo stato del database tutti i giorni (compresi i fine settimana) durante l'orario di lavoro dalle 9:00 alle 18:00

00 09-18 * * * /home/ramesh/bin/check-db-status
  • 00 – 0° minuto (inizio dell'ora)
  • 18-09 – 9:00, 10:00, 11:00, 12:00, 13:00, 14:00, 15:00, 16:00, 17:00, 18:00
  • * – Tutti i giorni
  • * – Ogni mese
  • * – Tutti i giorni della settimana

Cron Job tutti i giorni feriali durante l'orario di lavoro

Questo esempio controlla lo stato del database ogni giorno della settimana (esclusi sabato e domenica) durante l'orario di lavoro 9:00 – 18:00

00 09-18 * * 1-5 /home/ramesh/bin/check-db-status
  • 00 – 0° minuto (inizio dell'ora)
  • 18-09 – 9:00, 10:00, 11:00, 12:00, 13:00, 14:00, 15:00, 16:00, 17:00, 18:00
  • * – Tutti i giorni
  • * – Ogni mese
  • 1-5 -lun, mar, mer, gio e ven (tutti i giorni feriali)

4. Come visualizzare le voci di Crontab?

Visualizza le voci Crontab dell'utente attualmente connesso

Per visualizzare le voci di crontab, digita crontab -l dal tuo account unix come mostrato di seguito.

ramesh@dev-db$ crontab -l
@yearly /home/ramesh/annual-maintenance
*/10 * * * * /home/ramesh/check-disk-space

[Note: This displays crontab of the current logged in user]

Visualizza le voci di Root Crontab

Accedi come utente root (su – root) ed esegui crontab -l come mostrato di seguito.

root@dev-db# crontab -l
no crontab for root

Crontab HowTo:Visualizza le voci di Crontabs di altri utenti Linux

Per visualizzare le voci crontab di altri utenti Linux, accedi a root e usa -u {username} -l come mostrato di seguito.

root@dev-db# crontab -u sathiya -l
@monthly /home/sathiya/monthly-backup
00 09-18 * * * /home/sathiya/check-db-status

5. Come modificare le voci di Crontab?

Modifica le voci Crontab dell'utente attualmente connesso

Per modificare le voci di un crontab, utilizzare crontab -e come mostrato di seguito. Per impostazione predefinita, questo modificherà il crontab degli utenti che hanno effettuato l'accesso.

ramesh@dev-db$ crontab -e
@yearly /home/ramesh/centos/bin/annual-maintenance
*/10 * * * * /home/ramesh/debian/bin/check-disk-space
~
"/tmp/crontab.XXXXyjWkHw" 2L, 83C

[Note: This will open the crontab file in Vim editor for editing.
Please note cron created a temporary /tmp/crontab.XX... ]

Quando salvi il file temporaneo sopra con :wq, salverà crontab e visualizzerà il seguente messaggio che indica che crontab è stato modificato correttamente.

~
"crontab.XXXXyjWkHw" 2L, 83C written
crontab: installing new crontab

Modifica voci di Root Crontab

Accedi come utente root (su – root) ed esegui crontab -e come mostrato di seguito.

root@dev-db# crontab -e

Modifica le voci del file Crontab di altri utenti Linux

Per modificare le voci crontab di altri utenti Linux, accedi a root e usa -u {username} -e come mostrato di seguito.

root@dev-db# crontab -u sathiya -e
@monthly /home/sathiya/fedora/bin/monthly-backup
00 09-18 * * * /home/sathiya/ubuntu/bin/check-db-status
~
~
~
"/tmp/crontab.XXXXyjWkHw" 2L, 83C

6. Pianifica un lavoro per ogni minuto utilizzando Cron.

Idealmente potresti non avere l'obbligo di pianificare un lavoro ogni minuto. Ma la comprensione di questo esempio ti aiuterà a capire gli altri esempi menzionati di seguito in questo articolo.

* * * * * CMD

Il * indica tutte le unità possibili, ovvero ogni minuto di ogni ora durante tutto l'anno. Più che usare direttamente questo *, lo troverai molto utile nei seguenti casi.

  • Quando specifichi */5 nel campo dei minuti significa ogni 5 minuti.
  • Quando specifichi 0-10/2 nel campo dei minuti, significa ogni 2 minuti nei primi 10 minuti.
  • Quindi la convenzione di cui sopra può essere utilizzata per tutti gli altri 4 campi.

7. Pianifica un lavoro Cron in background ogni 10 minuti.

Utilizzare quanto segue, se si desidera controllare lo spazio su disco ogni 10 minuti.

*/10 * * * * /home/ramesh/check-disk-space

Esegue il comando specificato check-disk-space ogni 10 minuti durante tutto l'anno. Ma potresti avere l'obbligo di eseguire il comando solo durante l'orario di ufficio o viceversa. Gli esempi sopra mostrano come fare queste cose.

Invece di specificare i valori nei 5 campi, possiamo specificarlo utilizzando un'unica parola chiave come indicato di seguito.

Ci sono casi speciali in cui invece dei 5 campi precedenti puoi utilizzare @ seguito da una parola chiave, ad esempio riavvio, mezzanotte, annuale, ogni ora.

Tabella:parole chiave speciali Cron e relativo significato
Parola chiave Equivalente
@annuale 0 0 1 1 *
@giornaliero 0 0 * * *
@hourly 0 * * * *
@reboot Esegui all'avvio.

8. Pianifica un lavoro per il primo minuto di ogni anno utilizzando @yearly

Se desideri che un lavoro venga eseguito il primo minuto di ogni anno, puoi utilizzare il @annuale cron come mostrato di seguito.

Questo eseguirà la manutenzione annuale del sistema utilizzando lo script della shell di manutenzione annuale alle 00:00 del 1° gennaio di ogni anno.

@yearly /home/ramesh/red-hat/bin/annual-maintenance

9. Pianifica un lavoro Cron all'inizio di ogni mese utilizzando @monthly

È simile a @yearly come sopra. Ma esegue il comando mensilmente una volta utilizzando @monthly parola chiave cron.

Questo eseguirà il backup su nastro dello script della shell alle 00:00 il 1° di ogni mese.

@monthly /home/ramesh/suse/bin/tape-backup

10. Pianifica un lavoro in background ogni giorno utilizzando @daily

Usando il @daily cron, questo eseguirà una pulizia giornaliera del file di registro utilizzando lo script della shell cleanup-logs alle 00:00 di ogni giorno.

@daily /home/ramesh/arch-linux/bin/cleanup-logs "day started"

11. Come eseguire un comando Linux dopo ogni riavvio usando @reboot?

Utilizzando il @reboot cron, questo eseguirà il comando specificato una volta dopo che la macchina è stata avviata ogni volta.

@reboot CMD

12. Come disabilitare/reindirizzare l'output della posta di Crontab utilizzando la parola chiave MAIL?

Per impostazione predefinita crontab invia l'output del lavoro all'utente che ha pianificato il lavoro. Se desideri reindirizzare l'output a un utente specifico, aggiungi o aggiorna la variabile MAIL nel crontab come mostrato di seguito.

ramesh@dev-db$ crontab -l
MAIL="ramesh"

@yearly /home/ramesh/annual-maintenance
*/10 * * * * /home/ramesh/check-disk-space

[Note: Crontab of the current logged in user with MAIL variable]


Se si desidera che la posta non venga inviata da nessuna parte, ad esempio per interrompere l'invio dell'output di crontab tramite e-mail, aggiungere o aggiornare la variabile MAIL nel crontab come mostrato di seguito.

MAIL=""

13. Come eseguire un lavoro Cron Linux ogni secondo usando Crontab.

Non puoi pianificare un cronjob ogni secondo. Perché in cron l'unità minima che puoi specificare è minute. In uno scenario tipico, non c'è motivo per cui la maggior parte di noi esegua un lavoro ogni secondo nel sistema.

14. Specificare la variabile PATH nel Crontab

In tutti gli esempi precedenti abbiamo specificato il percorso assoluto del comando Linux o lo script di shell che deve essere eseguito.

Ad esempio, invece di specificare /home/ramesh/tape-backup, se vuoi semplicemente specificare tape-backup, aggiungi il percorso /home/ramesh alla variabile PATH nel crontab come mostrato di seguito.

ramesh@dev-db$ crontab -l

PATH=/bin:/sbin:/usr/bin:/usr/sbin:/home/ramesh

@yearly annual-maintenance
*/10 * * * * check-disk-space

[Note: Crontab of the current logged in user with PATH variable]

15. Installazione di Crontab da un file Cron

Invece di modificare direttamente il file crontab, puoi anche aggiungere prima tutte le voci a un file cron. Una volta che hai tutte queste voci nel file, puoi caricarle o installarle su cron come mostrato di seguito.

ramesh@dev-db$ crontab -l
no crontab for ramesh

$ cat cron-file.txt
@yearly /home/ramesh/annual-maintenance
*/10 * * * * /home/ramesh/check-disk-space

ramesh@dev-db$ crontab cron-file.txt

ramesh@dev-db$ crontab -l
@yearly /home/ramesh/annual-maintenance
*/10 * * * * /home/ramesh/check-disk-space

Nota: Questo installerà cron-file.txt sul tuo crontab, che rimuoverà anche le tue vecchie voci cron. Quindi, fai attenzione durante il caricamento di voci cron da un file cron.txt.

Esercitazioni aggiuntive su Cron

  • Cron vs Anacron:come configurare Anacron su Linux (con un esempio)
  • Come eseguire Cron ogni 5 minuti, secondi, ore, giorni, mesi
  • 6 Esempi di comandi Crontab Linux
  • Come installare, modificare o rimuovere Cron Job in modalità batch
  • Comprendi i comandi at, atq, atrm, batch usando 9 esempi

Fantastici articoli su Linux

Di seguito sono riportati alcuni fantastici 15 esempi articoli che potresti trovare utili.

  • Mamma, l'ho trovato! — 15 Esempi pratici di comandi Trova Linux
  • 15 esempi per padroneggiare la cronologia della riga di comando di Linux
  • Comando Unix LS:15 esempi pratici
  • Fai una presa sul Grep! – 15 Esempi pratici di comandi Grep

Linux
  1. 4 alternative a cron in Linux

  2. Come usare cron su Linux

  3. 6 Esempi di comandi Linux Crontab

  4. Linux:esegui cron job in primo piano

  5. cron job occasionalmente non in esecuzione

10 fantastici esempi di comandi Awk in Linux

Spiegazione di Cron Jobs e Crontab su Linux

Capire Crontab in Linux con esempi

Che cos'è un Cron Job in Linux

10 utili esempi di cron per pianificare i lavori in Linux

Esempi di comandi id in Linux