Introduzione
Il at
command è un'utilità della riga di comando di Linux utilizzata per pianificare un lavoro per l'esecuzione successiva. L'utilità legge i comandi dall'input standard e li raggruppa in un at
job, che viene eseguito una sola volta.
L'alternativa per at
è un lavoro cron. Tuttavia, mentre at
i lavori vengono eseguiti solo una volta, i lavori cron sono eventi ricorrenti.
In questo tutorial imparerai a usare il at
comando e vedere esempi utili per la pianificazione dei comandi.

Prerequisiti
- Un sistema che esegue Linux.
- Un account utente con privilegi sudo.
Installa il comando at
A seconda della distribuzione Linux in uso, il at
il comando potrebbe non essere preinstallato.
Controlla se at
viene installato inserendo il nome del comando nel terminale:

Se l'utilità non è preinstallata, il messaggio di output indica Comando 'at' non trovato .
Installa su Ubuntu e Debian
Segui i passaggi seguenti per installare at
su Ubuntu o Debian:
1. Aggiorna il repository del pacchetto:
sudo apt update
2. Installa il at
comando eseguendo:
sudo apt install at
Installa su CentOS e Fedora
Segui i passaggi seguenti per installare at
su CentOS o Fedora:
1. Aggiorna il repository del pacchetto:
sudo yum -y update
2. Esegui il comando seguente per installare at
:
sudo yum install at
Abilita il demone di pianificazione
Il demone di pianificazione viene eseguito in background ed esegue i lavori pianificati in tempo.
Esegui il comando seguente dopo aver installato at
pacchetto per abilitare il atd
scheduling daemon e impostarlo per l'avvio all'avvio del sistema.
sudo systemctl enable --now atd

Linux con la sintassi dei comandi e le opzioni
La sintassi per at
il comando è:
at [option] runtime
Le opzioni ti consentono di visualizzare o eliminare i lavori pianificati e personalizzare at
pianificazione dei lavori di comando. Le opzioni disponibili sono:
Opzione | Descrizione |
---|---|
-V | Stampa il numero di versione del programma sullo standard output. |
-q [queue] | Utilizza il [queue] specificato costituito da una singola lettera, che va da at -z e A -Z . Il at coda è l'impostazione predefinita per at e il b coda è l'impostazione predefinita per batch . Le code con lettere più alte funzionano con maggiore precisione. L'invio di un lavoro a una coda con una lettera maiuscola considera il lavoro come inviato a batch . Il batch le regole di carico medio si applicano una volta che è il momento di eseguire il lavoro. Assegnare una coda a atq fa sì che vengano visualizzati solo i lavori in sospeso in quella coda. |
-m | Invia un'e-mail all'utente dopo che il lavoro è stato completato, anche se non c'è stato alcun output. Richiede un indirizzo e-mail configurato per l'utente che ha pianificato il lavoro. |
-f [file] | Legge il lavoro dal [file] specificato anziché dall'input standard. |
-b | Un alias per batch . Pianifica i lavori e li esegue in un batch coda quando la media del livello di carico del sistema è inferiore a 1,5. |
-l | Un alias per atq . Elenca i lavori in sospeso dell'utente. Se l'utente è superutente, elenca tutti i lavori in sospeso degli utenti. |
-d | Un alias per atrm . Elimina i lavori pianificati, identificati dal loro numero di lavoro. |
-v | Mostra il tempo di esecuzione del lavoro prima della lettura del lavoro. Il formato dell'ora è Thu Feb 20 14:50:00 1997 . |
-c | Cattura il lavoro specificato, mostrandone il contenuto nell'output della riga di comando standard. |
-t [time_arg] | Programma un lavoro per il tempo specificato da [time_arg] discussione. Il formato dell'ora accettato è [[CC]YY]MMDDhhmm . |
[runtime]
Espressioni temporali
Pianifica un lavoro utilizzando espressioni di tempo assoluto o espressioni di tempo relative all'ora di impostazione del lavoro.
Le espressioni temporali assolute disponibili sono:
YYMMDDhhmm[.ss]
. Specifica un anno, un mese, un giorno, un'ora, un minuto e, facoltativamente, secondi abbreviati.CCYYMMDDhhmm[.ss]
. Specifica un anno intero, un mese, un giorno, un'ora, un minuto e, facoltativamente, secondi.now
. Indica il giorno e l'ora correnti e l'esecuzione immediata.midnight
. Indica le 00:00.noon
. Indicano le 12:00.teatime
. Interpretato come 16:00.AM
. Indica l'ora prima delle 12:00.PM
. Indica l'ora dopo le 12:00.today
. Il giorno corrente.tomorrow
. Il giorno dopo il giorno corrente.
Ad esempio, il comando seguente pianifica una chiamata del comando echo alle 17:00:
echo "hello" | at 5PM
Specifica un'espressione relativa del tempo aggiungendo un segno più (+
), l'importo e uno dei seguenti:
minutes
hours
days
weeks
months
years
Utilizzo di espressioni temporali come tomorrow
o tuesday
, pianifica i lavori in quei giorni all'ora corrente. Specificare ulteriormente l'ora utilizzando il +
carattere.
Ad esempio, il comando seguente pianifica un echo
richiamo del comando cinque minuti dopo la pianificazione del lavoro:
echo "hello" | at now +5 minutes
Ambiente
Il SHELL
il valore della variabile di ambiente determina quale shell (bash, zsh, ecc.) è at
comando utilizza per eseguire il lavoro. Durante la pianificazione del lavoro, il comando avverte l'utente quale shell utilizzerà durante l'esecuzione.
Linux in esempi di comandi
La sezione seguente mostra utili at
esempi di comandi.
Programma un lavoro in modo interattivo
Il at
Il comando consente di pianificare un lavoro utilizzando il at
interattivo richiesta. Apri il prompt interattivo utilizzando la seguente sintassi:
at [runtime]
Il prompt interattivo consente di immettere quali comandi eseguire all'ora specificata. Il comando stampa anche un avviso che indica quale shell verrà utilizzata dal comando.
Esci dal prompt interattivo e salva il lavoro pianificato premendo Ctrl + D . Annulla il lavoro con Ctrl + C .
Ad esempio:

Nell'esempio sopra, abbiamo pianificato un lavoro per le 17:00, che apre il prompt interattivo. Il lavoro pianificato consiste nell'esecuzione di echo
comando e l'utilità utilizza la shell bash standard.
Invia un lavoro a a
Pianifica un lavoro senza il at
interattivo prompt eseguendo il pipettaggio dei comandi su at
e specificando il runtime. Usa echo
oppure printf per passare i comandi a at
.
Ad esempio:
echo "command_to_run" | at [runtime]
Per programmare un at
lavoro che invia l'echo
output del comando in un file, utilizzare:
echo "hello" >> example.txt | at now
Usa il comando cat per verificare se il file esiste per assicurarti che il lavoro sia stato eseguito:
cat example.txt

Visualizza un lavoro pianificato
Il -c
l'opzione visualizza il contenuto di un lavoro pianificato in precedenza. L'opzione è utile se dimentichi qual era il lavoro o vuoi controllare l'orario programmato.
Visualizza i contenuti di un at
programmato lavoro utilizzando la seguente sintassi:
at -c [job_number]
Ottieni il numero del lavoro eseguendo atq
comando prima per elencare tutti i lavori in sospeso.
Ad esempio:

Nell'esempio sopra, abbiamo prima richiesto un elenco di tutti i lavori in sospeso per ottenere i numeri dei lavori, quindi abbiamo mostrato il contenuto del lavoro 14 nell'output standard.
Elenca lavori pianificati
Il at
l'utilità consente di rivedere quali lavori sono ancora in coda e in attesa di esecuzione. Esistono due modi per visualizzare i lavori in sospeso:
- Esegui
atq
comando. - Utilizza il
-l
opzione.
Ad esempio:
at -l

L'output mostra il numero del lavoro in sospeso, la data, l'ora, l'anno e la coda per l'utente corrente. Per elencare i lavori in sospeso di tutti gli utenti, esegui il comando con sudo
.
sudo atq

Nell'esempio sopra, eseguendo atq
mostra i lavori in sospeso solo per l'utente corrente. Esecuzione di atq
con sudo
mostra i lavori in sospeso per tutti gli utenti.
Invia un'e-mail di notifica all'esecuzione
Il at
l'utilità invia notifiche e-mail sui lavori completati per impostazione predefinita. Le notifiche e-mail richiedono un indirizzo e-mail funzionante configurato per il tuo account utente e il sistema deve essere in grado di inviare e-mail.
Per istruire at
per inviare notifiche via email al completamento del lavoro, anche se non c'è output, specificare il -m
opzione.
Ad esempio:
rm example.txt | at -m tomorrow
Il comando sopra pianifica il lavoro per l'ora corrente domani. Al termine, il at
l'utilità notifica l'utente utilizzando l'indirizzo e-mail configurato per l'utente bosko .
Esegui lavori senza notifica
Per evitare di ricevere notifiche via email sui lavori completati, specifica il -M
opzione durante la pianificazione di un at
lavoro.
Ad esempio:
echo "shutdown -h now" | at -M 00:00

Nell'esempio sopra, abbiamo programmato un arresto del sistema per mezzanotte e utilizzato il -M
opzione per impedire all'utilità di inviare la notifica e-mail.
Rimuovi un lavoro pianificato
Per rimuovere at
programmato lavori, specifica il -r
opzione o eseguire atrm
comando insieme all'ID lavoro. Ottieni l'ID lavoro eseguendo atq
o utilizzando il -l
opzione.
Nell'esempio seguente, abbiamo rimosso il lavoro 12:

Limita utenti
Il at
il pacchetto utilizza due file per limitare at
e batch
accesso al comando:
/etc/at.allow
/etc/at.deny
Modifica i file per consentire solo a determinati utenti di creare, rimuovere o visualizzare at
in attesa lavori. I file sono un elenco di nomi utente che possono o non possono accedere al at
comandi. Un carattere di nuova riga separa i nomi utente e gli spazi bianchi non sono consentiti.
Importante :Se il /etc/at.allow
esiste, solo gli utenti in esso elencati possono utilizzare at
o batch
e il /etc/at.deny
il file viene ignorato. Se il /etc/at.allow
il file non esiste, gli utenti sono elencati in /etc/at.deny
non sono autorizzati a utilizzare at
o batch
. L'utente root può sempre eseguire at
comandi, indipendentemente dai file di controllo accessi.
Modifica il /etc/at.deny
file con privilegi sudo per negare a un utente l'accesso a at
comandi. Nell'esempio seguente, abbiamo modificato il file utilizzando l'editor vi:
sudo vi /etc/at.deny
Dopo aver aggiunto un nome utente all'elenco, eseguendo il at
il comando che utilizza l'account utente limitato genera il seguente messaggio:

Esegui lavori quando il caricamento del sistema lo consente
Il batch
comando (-b
opzione) pianifica un at
lavoro per l'esecuzione quando la media del carico del sistema scende al di sotto di 1,5. L'esecuzione di lavori quando il carico del sistema è basso impedisce il consumo di tutte le risorse di sistema e garantisce un funzionamento ottimale del sistema.
Ad esempio, il lavoro seguente viene eseguito non appena il carico del sistema scende al di sotto di 1,5:
batch
echo "Hello world!" >> hello.txt
