Come usare il comando at su Linux

7 feb 2024 5 min di lettura
Come usare il comando at su Linux
Indice dei contenuti

Introduzione

atè un'utilità della riga di comando che consente di pianificare l'esecuzione automatica di vari comandi e script in una data e un'ora specifiche. I lavori creati con atvengono eseguiti una sola volta, rendendolo uno strumento eccellente per gestire attività una tantum che devono essere completate in un momento preciso.

In questo articolo spiegheremo come utilizzare e atle sue utilità associate batchper visualizzare, eliminare e creare lavori da eseguire in un secondo momento.atqatrm

Installazione at

A seconda della distribuzione, atpotrebbe essere presente o meno sul tuo sistema Linux.

Se il comando non è installato, puoi installarlo facilmente utilizzando il gestore pacchetti della tua distribuzione.

Installa at su CentOS e Fedora

sudo yum install at

Installa at su Ubuntu e Debian

sudo apt update 
sudo apt install at

Una volta installato il pacchetto, assicurati atdche il demone di pianificazione sia in esecuzione e impostato per l'avvio all'avvio:

sudo systemctl enable --now atd

Come utilizzare il comando at

La sintassi semplificata del comando at è la seguente:

at [OPTION...] runtime

Il comando at accetta la data e l'ora (runtime) in cui si desidera eseguire il lavoro come argomento della riga di comando e si immette il comando da eseguire dallo standard input.

Ad esempio, creiamo un lavoro che verrà eseguito alle 9:00:

at 09:00

Dopo aver premuto il Entertasto, ti verrà presentato il atprompt dei comandi, che di solito inizia con at>. Inoltre, verrà visualizzato un messaggio di avviso che ti informa sulla shell in cui verrà eseguito il comando:

warning: commands will be executed using /bin/sh
at>

Inserisci uno o più comandi che desideri eseguire:

tar -xf /home/noviello/file.tar.gz

Una volta inseriti i comandi, premere Ctrl-Dper uscire dal prompt e salvare il lavoro:

at> <EOT>
job 4 at Tue May  5 09:00:00 2020

Il comando visualizzerà il numero del lavoro, l'ora e la data di esecuzione.

Esistono anche altri modi per passare il comando che desideri eseguire, oltre a immettere il comando nel prompt at. Un modo è utilizzare il comando echo  e reindirizzare il comando a at:

echo "command_to_be_run" | at 09:00

Un'altra opzione è utilizzare il documento Here:

at 09:00 <<END

Per leggere i comandi da un file anziché dallo standard input, richiamare il comando con l' -fopzione seguita dal percorso del file. Ad esempio, per creare un lavoro che eseguirà lo script /home/noviello/script.sh:

at 09:00 -f /home/noviello/script.sh

Per impostazione predefinita, se il comando produce output, atinvierà all'utente un'e-mail contenente l'output una volta completato il lavoro. Richiamare atcon l'opzione -M per sopprimere la notifica e-mail:

at 09:00 -M

Utilizzare -mper inviare un'e-mail anche se non viene visualizzato alcun output:

at 09:00 -m

Comando batch

batchoppure il suo alias at -bpianifica i lavori e li esegue in una coda batch quando il livello di carico del sistema lo consente. Per impostazione predefinita, i processi vengono eseguiti quando il carico medio del sistema è inferiore a 1,5. Il valore del carico può essere specificato quando si richiama il atddemone. Se il carico medio del sistema è superiore a quello specificato, i lavori rimarranno in coda.

Per creare un lavoro con batch, passa i comandi che desideri eseguire:

echo "command_to_be_run" | batch

Specifica dell'ora di esecuzione

L'utilità at accetta un'ampia gamma di specifiche temporali. È possibile specificare l'ora, la data e l'incremento rispetto all'ora corrente:

  • Orario: per specificare un orario, utilizzare il modulo HH:MMHHMM. Se preferisci utilizzare il formato dell'orologio a 12 ore, puoi aggiungere "am" o "pm" dopo l'ora. Ad esempio, 10:30 o 18:45. Puoi anche utilizzare stringhe come nowmidnightnoonteatime(16:00). Se un'attività o un evento è programmato per un orario già trascorso, verrà riprogrammato automaticamente alla stessa ora del giorno successivo.
  • Data: il comando consente di pianificare l'esecuzione del lavoro in una determinata data. La data può essere specificata utilizzando il nome del mese seguito dal giorno e da un anno facoltativo. In alternativa, puoi utilizzare stringhe come "oggi", "domani" o giorno della settimana per indicare la data. La data può essere indicata anche utilizzando i formati MMDD[CC]YYMM/DD/[CC]YYo .DD.MM.[CC]YY[CC]YY-MM-DD
  • Incrementoataccetta anche incrementi nel now + count time-unitformato, dove countè un numero e time-unitpuò essere una delle seguenti stringhe: minuteshoursdaysweeks.

Ora, data e incremento possono essere combinati. Ecco alcuni esempi:

Pianifica un lavoro da eseguire tra un'ora da adesso:

at now +1 hours

Pianifica un lavoro da eseguire alle 12:30 del 21 ottobre 2020:

at 12:30 102120

Pianifica un lavoro da eseguire alle 13:00 tra due giorni:

at 1pm + 2 days

Pianifica un lavoro per la domenica successiva in un momento successivo di dieci minuti rispetto all'ora corrente:

at sunday +10 minutes

È inoltre possibile specificare un'ora e una data utilizzando [[CC]YY]MMDDhhmm[.ss]l' -topzione. Ecco un esempio:

at -t 202005111321.32

Specifica della coda

Per impostazione predefinita, i lavori creati con atvengono pianificati nella coda denominata a, mentre i lavori creati con batchvengono pianificati nella bcoda.

Le query possono avere un nome da azAZ. Le code con lettere inferiori vengono eseguite con una gentilezza inferiore, il che significa che hanno la priorità su quelle con lettere più alte.

Per specificare la coda per un lavoro, utilizzare l'opzione -q seguita dal nome della coda desiderata. Ad esempio, se vuoi impostare un lavoro nella coda 'L', dovresti eseguire il comando con l'opzione -q L:

at monday +2 hours -q L

Elenco lavori in sospeso

Per elencare i lavori in sospeso dell'utente, esegui il comando atqat -l:

atq

L'output elencherà tutti i lavori, uno per riga. Ogni riga include il numero del lavoro, la data, l'ora, la lettera di coda e il nome utente.

noviello9	  Tue May  5 12:22:00 2023 a noviello
12	Wed Oct 21 12:30:00 2023 a noviello
15	Tue May  5 09:00:00 2023 a noviello
6	  Tue May  5 09:00:00 2023 a noviello
13	Mon May  4 23:08:00 2023 a noviello
11	Wed Jul  1 10:00:00 2023 a noviello
4	  Tue May  5 09:00:00 2023 a noviello

Quando atqviene richiamato come utente amministrativo, elencherà i lavori in sospeso di tutti gli utenti.

Rimozione di lavori in sospeso

Per rimuovere un lavoro in sospeso, invocare il comando atrmat -rseguito dal numero del lavoro. Ad esempio, per rimuovere il lavoro con il numero nove, dovresti eseguire:

atrm 9

Limitare gli utenti

I file /etc/at.deny/etc/at.allowconsentono di controllare quali utenti possono creare lavori con atbatchcomando. I file contengono un elenco di nomi utente, un nome utente per riga.

Per impostazione predefinita, /etc/at.deny esiste solo il file ed è vuoto, il che significa che tutti gli utenti possono utilizzare il atcomando. Se desideri negare l'autorizzazione a un utente specifico, aggiungi il nome utente a questo file.

Se il file /etc/at.allow esiste, solo gli utenti elencati in questo file possono utilizzare il comando at.

Se nessuno dei file esiste, solo gli utenti con privilegi amministrativi possono utilizzare il atcomando.

Conclusione

Il comando at è un'utilità utile che consente di pianificare i comandi da eseguire in un secondo momento. A differenza del comando crontab, che esegue i comandi in modo ricorrente, il comando at esegue i comandi solo una volta.

Per saperne di più sulle varie opzioni disponibili con il comando at, puoi digitare man atnel tuo terminale. Verrà visualizzata la pagina del manuale che elenca tutte le opzioni disponibili con spiegazioni dettagliate.

Se hai ulteriori domande o hai bisogno di assistenza nell'utilizzo del comando at, non esitare a lasciare un commento.

Buy me a coffeeBuy me a coffee

Supportaci se ti piacciono i nostri contenuti. Grazie.

Successivamente, completa il checkout per l'accesso completo a Noviello.it.
Bentornato! Accesso eseguito correttamente.
Ti sei abbonato con successo a Noviello.it.
Successo! Il tuo account è completamente attivato, ora hai accesso a tutti i contenuti.
Operazione riuscita. Le tue informazioni di fatturazione sono state aggiornate.
La tua fatturazione non è stata aggiornata.