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
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.
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