Usa anacron per un crontab migliore
Invece di eseguire manualmente attività ripetitive, lascia che Linux le faccia per te.
Nel 2021, ci sono più motivi che mai per cui le persone amano Linux. In questa serie condividerò 21 diversi motivi per utilizzare Linux. L'automazione è uno dei migliori motivi per utilizzare Linux.
Una delle cose che preferisco di Linux è la sua disponibilità a lavorare per me. Invece di eseguire attività ripetitive che mi fanno perdere tempo, che sono soggette a errori o che probabilmente dimentico, pianifico che Linux le svolga per me.
Preparazione per l'automazione
Il termine "automazione" può essere tanto intimidatorio quanto attraente. Trovo che sia utile affrontarlo in modo modulare.
1. Cosa vuoi che accada?
Innanzitutto, sappi quale risultato vuoi produrre. Stai filigranando le immagini? Rimuovere file da una directory disordinata? Eseguire un backup di dati importanti? Definisci chiaramente il compito per te stesso in modo da sapere a cosa mirare. Se c'è un'attività che ti ritrovi a svolgere ogni giorno, molto meno di una volta al giorno, allora potrebbe essere un candidato per l'automazione.
2. Impara le applicazioni di cui hai bisogno
Suddividi le attività più grandi in piccoli componenti e impara a produrre ciascun risultato manualmente ma in modo ripetibile e prevedibile. Gran parte di ciò che può essere fatto su Linux può essere scritto tramite script, ma è importante riconoscere i propri limiti attuali. C'è un'enorme differenza tra imparare ad automatizzare il ridimensionamento di diverse immagini in modo che possano essere inviate comodamente via e-mail e utilizzare l'apprendimento automatico per generare grafica elaborata per la tua newsletter settimanale. Una di queste cose la puoi imparare in un pomeriggio e l’altra potrebbe richiedere anni. Tuttavia, dobbiamo tutti iniziare da qualche parte, quindi inizia in piccolo e cerca sempre modi per migliorare.
3. Automatizzalo
Utilizza uno strumento di automazione su Linux per realizzarlo regolarmente. Questo è il passaggio trattato in questo articolo!
Per automatizzare qualcosa, è necessario uno script che automatizzi un'attività. Durante i test, è meglio mantenere le cose semplici, quindi l'attività automatizzata da questo articolo è la creazione di un file chiamato hello
nella directory /tmp
:
#!/bin/sh
touch /tmp/hello
Copia e incolla quel semplice script in un file di testo e chiamalo esempio
.
Cron
La soluzione di automazione integrata fornita con ogni installazione Linux è il sistema cron. Gli utenti Linux tendono a fare riferimento genericamente a cron come al metodo utilizzato per pianificare un'attività (solitamente chiamato "cron job"), ma esistono più applicazioni che forniscono le funzionalità di cron. Il più versatile è amico; il suo vantaggio è che non presuppone che il tuo computer sia sempre acceso, come fanno le storiche applicazioni cron progettate per gli amministratori di sistema.
Verifica quale sistema cron fornisce la tua distribuzione Linux. Se si tratta di qualcosa di diverso da Cronie, probabilmente puoi installare Cronie dal repository software della tua distribuzione. Se la tua distribuzione non dispone di un pacchetto per Cronie, puoi utilizzare invece il vecchio pacchetto anacron
. Il comando anacron
è incluso in Cronie, quindi indipendentemente da come lo acquisisci, assicurati di avere il comando anacron
disponibile sul tuo sistema prima di continuare. Anacron potrebbe richiedere privilegi di root amministrativo, a seconda della configurazione.
$ which anacron
/usr/sbin/anacron
Il compito di Anacron è garantire che i tuoi lavori di automazione vengano eseguiti su base regolare. Per fare questo, anacron controlla quando è stata eseguita l'ultima volta un lavoro e poi controlla quanto spesso gli hai detto di eseguire i lavori.
Supponiamo di impostare anacron per eseguire uno script una volta ogni cinque giorni. Ogni volta che accendi il computer o lo riattivi dalla modalità di sospensione, anacron esegue la scansione dei suoi registri per determinare se è necessario eseguire il lavoro. Se un lavoro è stato eseguito cinque o più giorni fa, anacron lo esegue.
Lavori Cron
Molti sistemi Linux vengono forniti in bundle con alcuni lavori di manutenzione da eseguire da cron. Mi piace mantenere i miei lavori separati dai lavori di sistema, quindi creo una directory nella mia home directory. Nello specifico, c'è una cartella nascosta chiamata ~/.local
("locale" nel senso che è personalizzata per il tuo account utente piuttosto che per il tuo sistema informatico "globale"), quindi creo la sottodirectory etc/cron.daily
per eseguire il mirroring della consueta home page di cron sul mio sistema. È inoltre necessario creare una directory di spool per tenere traccia dell'ultima volta in cui sono stati eseguiti i lavori.
$ mkdir -p ~/.local/etc/cron.daily ~/.var/spool/anacron
Puoi inserire qualsiasi script che desideri eseguire regolarmente nella directory ~/.local/etc/cron.daily
. Copia ora lo script example
nella directory e contrassegnalo come eseguibile utilizzando il comando chmod.
$ cp example ~/.local/etc/cron.daily
$ chmod +x ~/.local/etc/cron.daily/example
Successivamente, configura anacron per eseguire qualsiasi script si trovi nella directory ~/.local/etc/cron.daily
.
Anacron
Per impostazione predefinita, gran parte del sistema cron è considerato il dominio dell'amministratore di sistema perché viene spesso utilizzato per importanti attività di basso livello, come la rotazione dei file di registro e l'aggiornamento dei certificati. La configurazione illustrata in questo articolo è progettata per un utente normale che configura attività di automazione personali.
Per configurare anacron per eseguire i processi cron, crea un file di configurazione in /.local/etc/anacrontab
:
SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
1 0 cron.mine run-parts /home/tux/.local/etc/cron.daily/
Questo file dice ad anacron di eseguire tutti gli script eseguibili (run-parts
) trovati in ~/.local/etc/cron.daily
ogni giorno (ovvero, quotidianamente), con un ritardo di zero minuti. A volte, viene utilizzato un ritardo di alcuni minuti in modo che il tuo computer non venga colpito da tutte le attività possibili subito dopo l'accesso. Queste impostazioni sono tuttavia adatte per i test.
Il valore cron.mine
è un nome arbitrario per il processo. Io lo chiamo cron.mine
ma potresti chiamarlo cron.personal
o penguin
o come preferisci.
Verifica la sintassi del tuo file anacrontab
:
$ anacron -T -t ~/.local/etc/anacrontab \
-S /home/tux/.var/spool/anacron
Il silenzio significa successo.
Aggiunta di anacron a .profile
Infine, devi assicurarti che anacron funzioni con la tua configurazione locale. Poiché stai eseguendo anacron come utente normale e non come utente root, devi indirizzarlo alle tue configurazioni locali: il file anacrontab
che dice ad anacron cosa fare e la directory di spool che aiuta anacron a tenere traccia di quanti giorni sono trascorsi dall'ultima esecuzione di ciascun processo:
anacron -fn -t /home/tux/.local/etc/anacrontab \
-S /home/tux/.var/spool/anacron
Le opzioni -fn
dicono ad anacron di ignorare i timestamp, il che significa che lo stai forzando a eseguire il tuo lavoro cron, qualunque cosa accada. Questo è esclusivamente a scopo di test.
Testare il tuo lavoro cron
Ora che tutto è pronto, puoi testare il lavoro. Tecnicamente puoi testarlo senza riavviare, ma ha più senso riavviare perché è ciò per cui è progettato: sessioni di accesso interrotte e irregolari. Prenditi un momento per riavviare il computer, accedi e cerca il file di test:
$ ls /tmp/hello
/tmp/hello
Supponendo che il file esista, lo script di esempio è stato eseguito correttamente. Ora puoi rimuovere le opzioni di test da ~/.profile
, lasciando questa come configurazione finale:
anacron -t /home/tux/.local/etc/anacrontab \
-S /home/tux/.var/spool/anacron
Utilizzando Anacron
Hai configurato la tua infrastruttura di automazione personale, quindi puoi inserire qualsiasi script che desideri che il tuo computer gestisca per te nella directory ~/.local/etc/cron.daily
e verrà eseguito come pianificato.
Dipende da te la frequenza con cui vuoi che i lavori vengano eseguiti. Il tuo script di esempio viene eseguito una volta al giorno. Ovviamente, ciò dipende dal fatto che il tuo computer sia acceso e attivo in un dato giorno. Se usi il computer venerdì ma lo metti da parte per il fine settimana, lo script non verrà eseguito sabato e domenica. Tuttavia, lunedì lo script verrà eseguito perché anacron saprà che è trascorso almeno un giorno. Puoi aggiungere directory settimanali, quindicinali o anche mensili a ~/.local/etc
per pianificare un'ampia varietà di intervalli.
Per aggiungere un nuovo intervallo:
- Aggiungi una directory a
~/.local/etc
(ad esempio,cron.weekly
). Aggiungi una riga a
~/.local/etc/anacrontab
per eseguire gli script nella nuova directory. Per un intervallo settimanale, la configurazione sarebbe:7 0 cron.mine run-parts /home/tux/.local/etc/cron.weekly/
(con il valore
0
che facoltativamente rappresenta un certo numero di minuti per ritardare educatamente l'inizio dello script).- Inserisci i tuoi script nella directory
cron.weekly
.
Benvenuti nello stile di vita automatizzato. Non ti sembrerà, ma stai per diventare molto più produttivo.