Il comando at in Linux può essere utilizzato per pianificare lavori che non vengono eseguiti in base a una pianificazione regolare.
Può essere paragonato al concetto di Crontab in Linux, che è un modo migliore per automatizzare le attività ricorrenti.
In questo tutorial, mostrerò come utilizzare il comando "at" per pianificare attività e comandi in esecuzione in un determinato momento in futuro.
Installazione a comando in Linux
Prima di iniziare, dovresti controllare se 'at' è installato sul tuo sistema. Non è installato per impostazione predefinita su tutti i sistemi operativi.
Puoi verificarlo digitando:
at -V
Se il software è già installato, verrà restituito il numero di versione. In caso contrario, può essere installato su sistemi basati su Debian digitando:
sudo apt install at
Se stai utilizzando una distribuzione Linux diversa, potrebbe essere necessario modificare questo comando per riflettere il gestore di pacchetti utilizzato dalla tua distribuzione.
Per iniziare
L'utilità "at" è in realtà una serie di comandi che funzionano insieme per pianificare i lavori. Come ho già detto, at è preferito per le situazioni in cui il tuo compito è più "una tantum" che un evento ricorrente.
Ho creato una tabella con alcuni dei comandi di base associati a at .
Comando | Funzione |
---|---|
at | consente all'utente di pianificare l'attività |
atq | elenca i lavori in coda per l'utente connesso o per tutti gli utenti se eseguiti come sudo |
atrm | rimuove i lavori in base al numero di lavoro specificato |
batch | indica al sistema di eseguire il lavoro all'ora specificata solo se il carico del sistema è a un certo livello (media del carico <1.5) |
Tutte le combinazioni di tasti | [ ctrl + a ] + ? |
Utilizzo a comando in Linux per la pianificazione dei lavori
Utilizzando at ha il suo formato unico. Quando vuoi programmare un lavoro, digita nel tuo terminale:
at [time] [date/day]
L'ora è obbligatoria, ma la data è facoltativa, se non viene inserito nulla, si farà un'ipotesi basata sulla data corrente e sull'ora di sistema.
Quando premi invio, ti verrà chiesto di inserire i comandi. Puoi inserire quanti ne vuoi. Digita 'ctrl + d' per salvare ed uscire.
Lascia che te lo mostri con esempi.
Esempio 1:inserisci ora/data usando il linguaggio naturale
Hai molte opzioni diverse per inserire l'ora. A differenza di crontab con il suo sistema basato su asterischi alquanto complicato, "at" riconosce l'input "umano" in modo più efficiente.
Ci sono molte espressioni simili a quelle umane che possono essere comprese dal software. Molti di questi sono specifici della locale. Può riconoscere espressioni comuni come "mezzanotte" o "mezzogiorno". Può anche distinguere tra AM e PM. Allo stesso modo, può riconoscere diversi formati per giorni e date, comprese le abbreviazioni.
Può anche utilizzare l'espressione "ora". Puoi semplicemente inserire il comando come di seguito e verrà eseguito il comando in 5 minuti.
at now + 1 minutes
[email protected]:~$ at now + 1 min
warning: commands will be executed using /bin/sh
at> echo "Look at you, using at like a champ!" > message.txt
at> <EOT>
job 8 at Mon Jan 6 02:59:00 2020
Molto probabilmente puoi ignorare l'avviso su bin/sh . Potrebbe potenzialmente causare mal di testa se si utilizza una shell diversa. La stragrande maggioranza delle distribuzioni Linux viene fornita con bash poiché la shell di sistema è collegata a simboli come "sh"... È una lunga storia.
Quindi, è passato circa un minuto, giusto? Controlla la directory per un nuovo file.
Dovresti avere un file chiamato "message.txt" contenente il nostro testo.
[email protected]:~$ ls m*
message.txt
Sembra buono, ma ha catturato correttamente il nostro messaggio? Vediamo il contenuto del file:
[email protected]:~$ cat message.txt
Look at you, using at like a champ!
Esempio 2:utilizzo di una data/ora specificata
Per il tuo primo lavoro, hai utilizzato il tempo "relativo" "adesso + [tempo]". Questo è un ottimo modo semplice per programmare un lavoro, ma potresti voler essere più specifico.
Questa volta, pianifichiamo 2 lavori in orari diversi.
È possibile utilizzare il file message.txt (creato nell'esempio precedente) per la dimostrazione. Ogni lavoro sostituirà il contenuto del file.
Puoi controllare l'ora corrente sul tuo sistema Linux con il comando date.
Imposta il primo lavoro per un tempo specifico (a partire da 5 minuti):
[email protected]:~$ at 3:45
warning: commands will be executed using /bin/sh
at> echo "5 minutes later..." > message.txt
at> <EOT>
job 11 at Mon Jan 6 03:45:00 2020
Imposta il secondo lavoro per un tempo specifico (a partire da 10 minuti):
[email protected]:~$ at 3:50
warning: commands will be executed using /bin/sh
at> echo "10 minutes later..." > message.txt
at> <EOT>
job 12 at Mon Jan 6 03:50:00 2020
Verifica alle 3:45:
[email protected]:~$ cat message.txt
5 minutes later...
Verifica alle 3:50:
[email protected]:~$ cat message.txt
10 minutes later...
Esempio 3:Visualizza tutti i lavori in coda con atq
In qualsiasi momento puoi controllare i lavori programmati usando il comando atq. Elencherà tutti i lavori attualmente programmati per l'utente che ha effettuato l'accesso. Per vedere tutti i lavori sul sistema, potrebbe essere necessario utilizzare privilegi elevati.
[email protected]:~$ atq
11 Mon Jan 6 03:45:00 2020 a christopher
12 Mon Jan 6 03:50:00 2020 a christopher
Ogni lavoro è identificato da un ID lavoro, dall'ora pianificata e dall'utente associato.
Puoi anche visualizzare il contenuto del lavoro pianificato con l'opzione -c:
at -c jobnumber
Esempio 4:rimozione di un lavoro pianificato con atrm
Se decidi di annullare un lavoro prima che venga eseguito, puoi farlo digitando il comando seguito dal corrispondente ID lavoro (che puoi ottenere con il comando atq).
[email protected]:~$ atrm 11
[email protected]:~$ atq
12 Mon Jan 6 03:50:00 2020 a christopher
Come puoi vedere, il lavoro 11 è stato rimosso dalla coda.
Esempio 5:usa un file per il comando at
Forse hai una serie di script che vuoi eseguire in modo irregolare e cron non è la soluzione giusta. È possibile inserire più lavori senza utilizzare l'input standard.
Immaginiamo uno scenario in cui le risorse umane richiedono la documentazione per l'attività al computer di un dipendente che ritengono stia violando la politica del lavoro. Potresti volere che determinati registri delle attività o altre informazioni sulla cronologia generino un rapporto per te in orari specifici.
Puoi risparmiare tempo elencando gli script necessari in un file di testo eseguendoli con at.
[email protected]:~$ cat problem_employee_logs.txt
path/to/get_browsing_history.sh
/whatever/path/get_activity_logs.sh
Ti viene l'idea. Quindi ora puoi aggiungere -f al comando 'at' e includere il nome del file dopo in questo modo:
[email protected]:~$ at now + 2 minutes -f problem_employee_logs.txt
warning: commands will be executed using /bin/sh
job 16 at Mon Jan 6 05:42:00 2020
Esempio 6:eseguire un lavoro quando il carico della CPU scende al di sotto di una soglia
I lavori batch verranno eseguiti quando la media del carico della CPU scende al di sotto di 1,5 per impostazione predefinita.
batch
Il metodo per inserire i lavori batch è identico a 'at ', tranne che non ha bisogno di un tempo per essere specificato.
Se vuoi modificare la soglia di carico, puoi farlo con il seguente comando:
atd -l [n]
Dove n è la soglia di carico che desideri scegliere. La pagina man consiglia di cambiarlo in un valore maggiore di n-1 dove n è il numero di CPU nel tuo sistema.
Conclusione
Grazie per aver letto. Spero che la tua comprensione del comando at sia migliorata. Se hai domande o desideri condividere come usi questo comando, dicci! Lascia un commento qui sotto.