Sui computer è importante fare in modo che le cose accadano secondo un programma regolare e prevedibile. È importante perché, come esseri umani, a volte possiamo essere cattivi nel ricordare di fare le cose in modo affidabile perché ci distraiamo, abbiamo troppe cose per la testa o siamo in vacanza. I computer sono davvero bravi a fare le cose in base a un programma, ma un essere umano deve programmare il computer prima che il computer agisca.
In un certo senso, il cron
system è un'introduzione semplice e rudimentale alla programmazione. Puoi fare in modo che il tuo computer faccia ciò che desideri semplicemente modificando un file. Non devi nemmeno sapere dove è conservato il file. Devi solo digitare un semplice comando, inserire la "ricetta" che vuoi che il tuo computer segua e salvare il tuo lavoro. Da quel momento in poi, il tuo computer esegue le tue istruzioni all'ora specificata fino a quando non gli viene detto di fermarsi.
In base alla progettazione, cron
non è un sistema complesso Ecco cosa devi sapere a riguardo.
Più risorse Linux
- Comandi Linux cheat sheet
- Cheat sheet sui comandi avanzati di Linux
- Corso online gratuito:Panoramica tecnica RHEL
- Cheat sheet della rete Linux
- Cheat sheet di SELinux
- Cheat sheet dei comandi comuni di Linux
- Cosa sono i container Linux?
- I nostri ultimi articoli su Linux
Cos'è cron?
Il cron
comando è così onnipresente in Linux e Unix, ed è stato imitato e reinventato così spesso che è quasi un termine generico per qualcosa che accade in base a una pianificazione . È una forma di automazione e, sebbene ne esistano diverse implementazioni (cron di Dillon, cron di Vixie, crony e altri) e varianti come anacron
e i timer di sistema, la sintassi e il flusso di lavoro sono rimasti sostanzialmente gli stessi per decenni.
Cron funziona su un sistema di "spool", proprio come stampanti ed e-mail. Se non sapevi che le stampanti e le e-mail utilizzano uno spool, va bene perché il punto di un file di spool è che non dovresti pensarci molto. Su un sistema Linux, la directory /var/spool
è progettato come hub centrale per file importanti ma di basso livello con cui l'utente non deve interagire direttamente. Uno degli spool gestiti in /var/spool
è cron
tabelle o "crontab" in breve. Ogni utente, compreso te stesso, su un sistema Linux ha un crontab. Gli utenti possono modificare, visualizzare e rimuovere il proprio crontab. Inoltre, gli utenti possono utilizzare il proprio crontab per pianificare le attività. Il cron
il sistema stesso monitora crontab e garantisce che qualsiasi lavoro elencato in un crontab venga eseguito all'ora specificata.
Modifica impostazioni cron
Puoi modificare il tuo crontab usando il crontab
comando insieme al -e
(per modifica ) opzione. Per impostazione predefinita, la maggior parte dei sistemi invoca vim
editor di testo. Se tu, come me, non usi Vim, puoi impostare un editor diverso per te stesso nel tuo ~/.bashrc
file. Ho impostato il mio su Emacs, ma potresti anche provare Nano, Kate o qualunque sia il tuo editor preferito. L'EDITOR La variabile d'ambiente definisce quale editor di testo usi nel tuo terminale, mentre il VISUAL variabile definisce quale editor usi in modalità grafica:
export EDITOR=nano
export VISUAL=kate
Aggiorna la sessione della shell con le nuove impostazioni:
$ source ~/.bashrc
Ora puoi modificare il tuo crontab con il tuo editor preferito:
$ crontab -e
Programma un'attività
Il cron
il sistema è essenzialmente un sistema di calendario. Puoi dire a cron
la frequenza con cui si desidera eseguire un processo utilizzando cinque diversi attributi:minuto, ora, data, mese, giorno della settimana. L'ordine di questi attributi è rigoroso e non necessariamente intuitivo, ma puoi pensarli come filtri o maschere. Per impostazione predefinita, potresti pensare che tutto sia impostato su sempre o ogni . Questa voce eseguirà touch /tmp/hello
all'inizio di ogni minuto durante ogni ora di ogni giorno tutto l'anno:
* * * * * touch /tmp/hello
È possibile limitare questa pianificazione onnicomprensiva impostando definizioni specifiche per ciascun attributo. Per eseguire il lavoro in base alla mezz'ora di ogni ora, imposta i minuti su 30 :
30 * * * * touch /tmp/hello
È possibile vincolare ulteriormente questa istruzione con un'ora specifica. Questo lavoro viene eseguito ogni mattina alle 3:30:
30 3 * * * touch /tmp/hello
Puoi anche far eseguire il lavoro solo il primo di ogni mese:
30 3 1 * * touch /tmp/hello
Puoi impostare un mese usando 1 per gennaio fino a 12 per dicembre e puoi impostare un giorno usando 0 per domenica fino a 6 per sabato. Questo lavoro viene eseguito alle 3:15 durante il mese di aprile, solo il lunedì:
15 3 * 4 1 touch /tmp/hello
Imposta incrementi
Tutte queste impostazioni corrispondono a un valore esattamente . Puoi anche usare cron
notazione per eseguire lavori dopo un determinato periodo di tempo. Ad esempio, puoi eseguire un lavoro ogni 15 minuti:
*/15 * * * * touch /tmp/hello
Potresti eseguire un lavoro alle 10:00 ogni tre giorni:
* 10 */3 * * touch /tmp/hello
Potresti eseguire un lavoro ogni sei ore:
* */6 * * * touch /tmp/hello
Stenografia Cron
cron
moderno le implementazioni hanno aggiunto una comoda scorciatoia per le pianificazioni comuni. Questi sono:
@hourly
@daily
@weekly
@monthly
@yearly or @annually
Elenca i lavori cron
Usando il crontab
comando, puoi vedere un elenco dei tuoi cron
programmati lavori:
$ crontab -l
15 3 * 4 1 touch /tmp/hello
Rimuovi un crontab
Quando hai finito con un crontab, puoi rimuoverlo con il -r
opzione:
$ crontab -r -i
Il -i
opzione sta per interattivo . Ti chiede conferma prima di eliminare il file.
Cosa può fare cron
Una cosa è sapere come usare cron
, ma è un'altra cosa sapere per cosa usarlo. Il caso d'uso classico è un buon piano di backup. Se il tuo computer è acceso per la maggior parte del giorno o tutto il giorno e tutta la notte, puoi pianificare un backup di routine di una partizione importante. Eseguo un'applicazione di backup chiamata rdiff-backup
sulla mia partizione dati primaria ogni giorno alle 3 del mattino:
$ crontab -l | grep rdiff
* 3 * * * rdiff-backup /data/ /vault/
Un altro uso comune è la manutenzione del sistema. Sul mio desktop Slackware, aggiorno il catalogo del mio repository locale ogni venerdì pomeriggio:
$ crontab -l | grep slack
* 14 * * 5 sudo slackpkg update
Potrei anche eseguire uno script Ansible alle 15:00 ogni tre giorni per riordinare la mia cartella Download:
$ crontab -l | grep ansible
* 15 */3 * * ansible-playbook /home/seth/Ansible/cleanup.yaml
Un piccolo investimento nella salute del tuo ambiente informatico fa molto. Ci sono script di deduplicazione, dimensione del file e /tmp
monitor di directory, ridimensionatori di foto, sposta file e molte altre attività umili che potresti pianificare per l'esecuzione in background per mantenere il tuo sistema ordinato. Con cron
, il tuo computer può prendersi cura di se stesso in modi che vorrei solo il mio appartamento fisico.
Ricorda le impostazioni di cron
Oltre a trovare perché hai bisogno di cron
, la cosa più difficile di cron
nella mia esperienza è stato ricordare la sua sintassi. Ripeti questo a te stesso, ancora e ancora fino a quando non lo hai memorizzato:
Minuti, ore, data, mese, giorno della settimana.
Minuti, ore, data, mese, giorno della settimana.
Minuti, ore, data, mese, giorno della settimana.
Meglio ancora, scarica il nostro cheatsheet gratuito in modo da avere la chiave a portata di mano quando ne hai più bisogno!