GNU/Linux >> Linux Esercitazione >  >> Linux

Pianifica i lavori in Linux con il comando 'at'

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.


Linux
  1. Pianifica un'attività con il comando Linux at

  2. Comando Tee Linux con esempi

  3. Comando JQ in Linux con esempi

  4. Come pianificare i lavori con il comando "at" in Linux

  5. Come pianificare le attività utilizzando in Linux

Utilizzo di Cat Command in Linux con esempi

Utilizzo del comando GREP in Linux con esempi

Come automatizzare i lavori giornalieri su Linux usando (at)

Utilizzo del comando Watch in Linux

Usare il comando tr in Linux per giocare con i personaggi

Come pianificare i lavori con Cron in Linux