Se vuoi pianificare un lavoro Linux che accadrà solo una volta, cron
è esagerato. il at
la famiglia di comando è ciò di cui hai bisogno! E se vuoi eseguire processi solo quando il tuo sistema ha risorse libere, Puoi usare batch
.
Come pianificare i lavori Linux
il cron
il demone tiene un elenco di lavori che esegui in momenti specifici. Queste attività e programmi vengono eseguiti in background all'ora pianificata. Ciò offre una grande flessibilità nella pianificazione delle attività che devono essere ripetute.. Se hai bisogno di eseguire un'attività una volta ogni ora, ad un'ora specifica ogni giorno, o almeno una volta al mese o all'anno, puoi impostarlo su cron
.
Nonostante questo, questo non aiuta se vuoi pianificare un'attività da eseguire solo una volta. Certo, puoi impostarlo in cron
, ma poi devi ricordarti di tornare indietro e rimuovere il voce crontab dopo l'esecuzione dell'attività, il che è scomodo.
Con Linux, se stai lottando con un ostacolo, è quasi una garanzia che anche qualcun altro abbia litigato con lui. fortunatamente, perché i sistemi operativi simili a Unix sono in circolazione da così tanto tempo, inoltre c'è una grande possibilità che qualcuno abbia creato una soluzione al tuo problema.
Per il problema descritto in precedenza, l'hanno fatto e si chiama at
.
IMPARENTATO: Come pianificare le attività in Linux: Introduzione ai file Crontab
Installazione del comando at
Abbiamo dovuto installare at
in Ubuntu 18.04 e Manjaro 18.1.0 (era già installato in Fedora 31).
Installare at
in Ubuntu, usa questo comando:
sudo apt-get install at
Al termine dell'installazione, puoi iniziare il at
demone con questo comando:
sudo systemctl enable --now atd.service
A Manjaro, tu installi at
con questo comando:
sudo pacman -Sy at
Al termine dell'installazione, digita questo comando per avviare il at
diavolo:
sudo systemctl enable --now atd.service
In qualsiasi distribuzione, puoi digitare questo comando per assicurarti atd
il demone è in esecuzione:
ps -e | grep atd
Come usare il comando at in modo interattivo
Utilizzo at
, è necessario assegnare una data e un'ora per l'esecuzione. C'è molta flessibilità nel modo in cui puoi scriverli, che tratteremo più avanti in questo post.
Nonostante questo, anche quando useremo at
in modo interattivo, è necessario fornire la data e l'ora in anticipo. Se non includi nulla nella riga di comando o scrivi qualcosa che non sia una data e un'ora, at
rispondere con “tempo illeggibile”, come mostrato di seguito:
a
alla banana
Le date e gli orari possono essere espliciti o relativi. Come esempio, diciamo che vuoi che un comando venga eseguito entro un minuto. at
sa cosa significa “Ora”, quindi puoi usare now
e dagli un minuto, Così:
a ora + 1 minuto
at
stampa un messaggio e un at
e aspetta che tu digiti i comandi che vuoi programmare. Primo, nonostante questo, considera il messaggio, come mostrato di seguito:
Ti dice at
avviare un'istanza di sh
conchiglia e volontà esegui i comandi al suo interno. I tuoi comandi non verranno eseguiti nella shell bash, che è compatibile con il sh
shell ma ha un set di funzioni più ricco.
Se i tuoi comandi o script cercano di utilizzare una funzione o una struttura fornita da Bash, ma sh
non è così, avrà esito negativo.
È facile verificare se i tuoi comandi o script verranno eseguiti in sh
. Utilizzare il sh
comando per avviare a sh
guscio:
SH
Il prompt dei comandi cambia in un simbolo di dollaro ($
), e ora puoi eseguire i tuoi comandi e verificare che funzionino correttamente.
Per tornare alla shell bash, Scrivi la exit
comando:
Uscita
Non vedrai alcun messaggio di errore o output standard dai comandi. Questo è perché sh
shell si avvia come attività in background e viene eseguita senza alcuna interfaccia a schermo.
Qualsiasi output dai comandi, bene o male, ti è stato inviato via e-mail. Viene inviato tramite il sistema di posta interno a chi esegue il at
comando. Ciò significa che è necessario installare e configurare quel sistema di posta interno.
un sacco di (la maggioranza) dei sistemi Linux non hanno un sistema di posta interno, poiché uno è raramente necessario. Coloro che utilizzano in genere un sistema come inviare una mail oh suffisso. Se il tuo sistema non dispone di un sistema di posta elettronica interno, puoi fare in modo che gli script scrivano su file o reindirizzino l'output su file per aggiungere record.
Se il comando non genera un messaggio di errore o un output standard, non riceverai comunque una mail. Molti comandi di Linux indicano il successo attraverso il silenzio, quindi nella maggior parte dei casi, non riceverai una mail.
IMPARENTATO: Cosa sono gli standard, stdout e stderr in Linux?
Ora è il momento di digitare un comando in at
. Per questo esempio, useremo un piccolo file di script chiamato sweep.sh
che cancella il *.bak
, *.tmp
, e *.o
record. Inserisci il percorso del comando, come mostrato di seguito, e poi premi Invio.
Viene visualizzato un altro prompt dei comandi e puoi aggiungere tutti i comandi che desideri. Generalmente, è più comodo avere i comandi in un singolo script e chiamare quello script dall'interno at
.
Ctrl pressione + D per dire at
hai finito di aggiungere comandi. at
Spettacoli
Dopo l'esecuzione del lavoro, scrivi quanto segue per verificare la tua posta interna:
posta
Se non c'è posta, deve subentrare al successo. Comunque, in questa circostanza, puoi controllare e vedere se *.bak
, *.tmp
, e *.o
I file sono stati rimossi per confermare che il comando ha funzionato.
Digita quanto segue per eseguire di nuovo tutto da capo:
a ora + 1 minuto
Dopo un minuto, scrivi quanto segue per ricontrollare la tua posta:
posta
¡Oye, abbiamo posta! Per leggere il messaggio numero uno, premere 1 e poi premi Invio.
Abbiamo ricevuto un'email da at
perché i comandi nello script hanno generato messaggi di errore. In questo esempio, non c'erano file da rimuovere perché quando abbiamo eseguito lo script in precedenza, li ha eliminati.
Premi D + Invio per rimuovere l'e-mail e Q + Invio per uscire dal programma di posta.
Formati di data e ora
Hai molta flessibilità quando si tratta dei formati di tempo che puoi usare con at
. Ecco alcuni esempi:
- Corri a 11:00 sono:
- Corri domani alle 11:00 sono:
- Corri a 11:00 un. m. Da questo giorno della prossima settimana:
- Corri a quest'ora, in questo giorno, la prossima settimana:
- Corri a 11:00 sono venerdì prossimo:
- Corri a quest'ora venerdì prossimo:
- Corri a 11:00 sono in questa data, il prossimo mese:
- Corri a 11:00 sono in una data specifica:
- Corri dentro 30 minuti:
- Esegui entro due ore:
- Corri domani a quest'ora:
- Corri a quest'ora giovedì:
- Corri a 12:00 sono:
- Corri a 12:00 pm:
- Se sei britannico, puoi anche programmare un comando da eseguire all'ora del tè (4 P. M.):
Guardando la coda di lavoro
Puoi scrivere il atq
comando per visualizzare la coda dei lavori pianificati, come mostrato di seguito.
Per ogni comando in coda, atq
mostra le informazioni successive:
- Identificazione del lavoro
- Appuntamento programmato
- Orario pianificato
- Coda dove c'è il lavoro. Le code sono etichettate come “un”, “B”, eccetera. Attività normali con cui pianifichi
at
entrare in coda “un”, mentre le attività con cui pianifichibatch
(di cui parleremo più avanti in questo post) entrare in coda “B”. - La persona che ha programmato il lavoro.
Utilizzo di at sulla riga di comando
Non dovresti usare at
in modo interattivo; puoi anche usarlo nel comando. Ciò semplifica l'utilizzo di script interni.
Puoi reindirizzare i comandi a at
, come questo:
eco "sh ~/sweep.sh" | a 08:45 SONO
Il lavoro viene accettato e programmato da at
, e il numero del lavoro e la data di esecuzione sono riportati come prima.
IMPARENTATO: Come usare Pipes su Linux
Usa a con gli script
Puoi anche memorizzare uno script in un file e poi passarlo a at
. Può essere un semplice file di script di testo, non deve essere uno script eseguibile.
Puoi usare il -f
(file) come segue per passare un nome di file a at
:
a ora + 5 minuti -f clean.txt
Puoi ottenere lo stesso risultato se reindirizzi il file a at
:
a ora + 5 minuti < clean.txt
Rimozione dei lavori pianificati dalla coda
Per rimuovere un lavoro pianificato dalla coda, puoi usare il atrm
comando. Se vuoi vedere prima la coda per trovare il numero del lavoro che vuoi rimuovere, Puoi usare atq
. Successivamente, usa quel numero di lavoro con atrm
, Come mostrato di seguito:
e
atrm 11
e
Come visualizzare una vista dettagliata dei lavori
Come abbiamo già detto in precedenza, può programmare lavori in futuro. Qualche volta, potresti dimenticare cosa sta per fare un lavoro. il atq
Il comando visualizza i lavori in coda, ma non quello che stanno per fare. Se vuoi vedere una vista dettagliata di un lavoro, puoi usare il -c
(gatto) opzione.
Primo, noi useremo atq
per trovare il numero di lavoro:
e
Ora, useremo il numero di lavoro 13 con il -c
opzione:
a -c 13
Ecco una ripartizione delle informazioni che otteniamo sul lavoro:
- Prima linea: Questo ci dice che i comandi verranno eseguiti sotto il
sh
guscio. - Seconda linea: Vediamo che i comandi verranno eseguiti con un ID utente e gruppo di 1000. Questi sono i valori per chi ha gestito la
at
comando. - Terza riga: La persona che riceve le email.
at
Inviare. - Quarta riga: il Maschera utente è 22. Questa è la maschera che viene utilizzata per determinare i permessi predefiniti per qualsiasi file creato in questo
sh
sessione. La maschera viene sottratta da 666, cosa ci dà 644 (l'identico ottale dirw-r--r--
). - Dati rimanenti: La maggior parte sono variabili d'ambiente.
- Risultati di un test. Un test verifica che la directory di esecuzione possa essere inserita. Se non può, viene generato un errore e l'esecuzione del lavoro viene abbandonata.
- I comandi da eseguire. Questi sono elencati e viene visualizzato il contenuto degli script pianificati. Nota che anche se lo script nel nostro esempio sopra è stato scritto per essere eseguito in Bash, funzionerà ancora su a
sh
guscio.
Il comando batch
il batch
comando funziona allo stesso modo al at
comando, ma con tre differenze significative:
- Puoi usare solo il
batch
comando in modo interattivo. - Invece di pianificare i lavori da eseguire in un momento specifico, li aggiunge alla coda e il
batch
Il comando li esegue quando il carico medio del sistema è inferiore a 1,5. - A causa di quanto sopra, non specificare mai una data e un'ora con il
batch
comando.
Quando usi il batch
comando, lo chiama per nome senza parametri della riga di comando come questo:
lotto
Prossimo, aggiungi attività proprio come faresti con il at
comando.
Controlla l'accesso al comando at
il at.allow
e at.deny
i file controllano chi può usare il at
comando famiglia. Questi si trovano all'interno del /etc
directory. Predefinito, solo il at.deny
il file esiste e viene creato quando at
è installato.
Ecco come funzionano:
at.deny
: Elenca le applicazioni e le entità che non possono essere utilizzateat
programmare i lavori.at.allow
: Elenchi che possono usareat
programmare i lavori. Se luiat.allow
Il file non esiste,at
basta usare ilat.deny
procedimento.
Per impostazione predefinita, chiunque può usare at
. Se vuoi limitare chi può usarlo, usa el at.allow
file per elencare quelli che possono. È più facile che aggiungere tutti quelli che non possono usare at
al at.deny
procedimento.
Questo è ciò at.deny
il file sembra:
sudo less /etc/at.deny
Il file elenca i componenti del sistema operativo che non possono utilizzare at
. Molti di questi non sono in grado di farlo per motivi di sicurezza, quindi non vuoi rimuovere nessuno dei file.
Ora, modificheremo il at.allow
procedimento. Aggiungiamo dave
e mary
, ma nessun altro sarà in grado di usare at
.
Primo, scriviamo quanto segue:
sudo gedit /etc/at.allow
Nell'editor, aggiungiamo i due nomi, come mostrato di seguito, e poi salviamo il file.
Se qualcun altro cerca di usare at
, ti diranno che non hai il permesso. Come esempio, diciamo un utente di nome eric
scrivi quanto segue:
a
verrebbe rifiutato, come mostrato di seguito.
Ancora, eric
Non è nel at.deny
procedimento. Non appena metti qualcuno in at.allow
file, a tutti gli altri viene negata l'autorizzazione all'uso at
.
Ottimo per occasioni eccezionali
Come potete vedere, entrambi at
e batch
sono ideali per le attività che devi eseguire solo una volta. Ancora, come una rapida recensione:
- Quando devi fare qualcosa di diverso da una normale procedura, programma con
at
. - Se vuoi eseguire un'attività solo quando il carico del sistema è sufficientemente basso, utilizzo
batch
.