GNU/Linux >> Linux Esercitazione >  >> Linux

Come eseguire o ripetere un comando Linux ogni X secondi per sempre

Un amministratore di sistema ha spesso bisogno di eseguire un comando ripetutamente in determinati periodi di tempo. Spesso tali attività possono essere facilmente completate con semplici comandi cron. Nella maggior parte dei casi questo dovrebbe funzionare, ma il periodo più breve in cui puoi eseguire il comando cron è ogni 1 minuto. Che tu ci creda o no, in molti casi è troppo lento.

In questo tutorial imparerai una semplice tecnica di scripting per monitorare o tenere d'occhio un particolare comando in uno stato di esecuzione continua simile al comando top (monitoraggio continuo del processo e dell'utilizzo della memoria) per ogni 3 secondi per impostazione predefinita.

Non ci fermeremo a discutere i motivi per cui dovresti eseguire i comandi così spesso. Credo che ognuno abbia ragioni diverse per questo nel lavoro quotidiano o anche a casa con PC e laptop.

1. Usa il comando orologio

Guarda è un comando Linux che ti consente di eseguire periodicamente un comando o un programma e mostra anche l'output sullo schermo. Ciò significa che sarai in grado di vedere l'output del programma in tempo. Per impostazione predefinita, l'orologio esegue nuovamente il comando/programma ogni 2 secondi. L'intervallo può essere facilmente modificato per soddisfare le tue esigenze.

Monitoraggio dell'utilizzo della memoria

“Watch” è estremamente facile da usare, per testarlo puoi avviare subito un terminale Linux e digitare il seguente comando:

# watch free -m

Il comando precedente controllerà la memoria libera del tuo sistema e aggiornerà i risultati del comando gratuito ogni due secondi.

Come visto dall'output sopra, hai un'intestazione, che mostra informazioni sull'intervallo di aggiornamento (da sinistra a destra), il comando in esecuzione e l'ora corrente. Se desideri nascondere questa intestazione, puoi utilizzare il -t opzione.

La prossima domanda logica è:come modificare l'intervallo di esecuzione. A tale scopo, puoi utilizzare -n opzione, che specifica l'intervallo con cui verrà eseguito il comando. Questo intervallo è specificato in secondi. Quindi supponiamo che tu voglia eseguire il tuo script.sh file ogni 10 secondi, puoi farlo in questo modo:

# watch -n 10 script.sh

Nota che se esegui il comando come mostrato sopra, dovrai cd nella directory (leggi Impara 15 esempi di comandi cd) in cui si trova lo script o specifica in altro modo il percorso completo di quello script.

Altre utili opzioni del comando watch sono:

  1. -b – crea un segnale acustico se l'uscita del comando è diversa da zero.
  2. -c – Interpreta le sequenze di colori ANSI.
  3. -d – evidenzia le modifiche nell'output del comando.

Monitoraggio utenti registrati, tempo di attività e carico medio

Supponiamo che tu voglia monitorare gli utenti che hanno effettuato l'accesso, il tempo di attività del server e caricare l'output medio in fase continua ogni pochi secondi, quindi utilizzare il seguente comando come mostrato:

# watch uptime

Per uscire dal comando, premi CTRL+C .

Qui, il 'uptime' il comando verrà eseguito e visualizzerà i risultati aggiornati ogni 2 secondi per impostazione predefinita.

Monitoraggio dell'avanzamento del comando di copia

In Linux, durante la copia di file da una posizione all'altra usando cp comando, lo stato di avanzamento dei dati non viene mostrato, per vedere lo stato di avanzamento dei dati in fase di copia è possibile utilizzare il watch comando insieme al comando du -s per controllare l'utilizzo del disco in tempo reale.

# cp ubuntu-15.10-desktop-amd64.iso /home/tecmint/ &
# watch -n 0.1 du -s /home/tecmint/ubuntu-15.10-desktop-amd64.iso 

Se ritieni che il processo di cui sopra sia troppo complicato da ottenere, ti suggerisco di utilizzare il comando di copia avanzata, che mostra l'avanzamento dei dati durante la copia.

2. Usa il comando di sospensione

Sleep viene spesso utilizzato per eseguire il debug degli script di shell, ma ha anche molti altri scopi utili. Ad esempio, se combinato con for o while loop, puoi ottenere risultati davvero fantastici.

Se non conosci bash scripting, puoi consultare la nostra guida sui loop bash qui.

Nel caso in cui questa sia la prima volta che senti parlare del "sleep" comando, viene utilizzato per ritardare qualcosa per un determinato periodo di tempo. Negli script, puoi usarlo per dire al tuo script di eseguire il comando 1, attendere 10 secondi e quindi eseguire il comando 2.

Con i loop precedenti, puoi dire a bash di eseguire un comando, dormire per N numero di secondi, quindi eseguire nuovamente il comando.

Di seguito puoi vedere esempi di entrambi i loop:

Esempio di ciclo for

# for i in {1..10}; do echo -n "This is a test in loop $i "; date ; sleep 5; done

La riga precedente eseguirà il comando echo e visualizzerà la data corrente, in totale 10 volte, con 5 secondi di sospensione tra le esecuzioni.

Ecco un esempio di output:

This is a test in loop 1 Wed Feb 17 20:49:47 EET 2016
This is a test in loop 2 Wed Feb 17 20:49:52 EET 2016
This is a test in loop 3 Wed Feb 17 20:49:57 EET 2016
This is a test in loop 4 Wed Feb 17 20:50:02 EET 2016
This is a test in loop 5 Wed Feb 17 20:50:07 EET 2016
This is a test in loop 6 Wed Feb 17 20:50:12 EET 2016
This is a test in loop 7 Wed Feb 17 20:50:17 EET 2016
This is a test in loop 8 Wed Feb 17 20:50:22 EET 2016
This is a test in loop 9 Wed Feb 17 20:50:27 EET 2016
This is a test in loop 10 Wed Feb 17 20:50:32 EET 2016

Puoi modificare l'eco e data comandi con i tuoi comandi o script e modifica l'intervallo di sospensione in base alle tue esigenze.

Esempio di ciclo while

# while true; do echo -n "This is a test of while loop";date ; sleep 5; done

Ecco un esempio di output:

This is a test of while loopWed Feb 17 20:52:32 EET 2016
This is a test of while loopWed Feb 17 20:52:37 EET 2016
This is a test of while loopWed Feb 17 20:52:42 EET 2016
This is a test of while loopWed Feb 17 20:52:47 EET 2016
This is a test of while loopWed Feb 17 20:52:52 EET 2016
This is a test of while loopWed Feb 17 20:52:57 EET 2016

Il comando precedente verrà eseguito finché non viene terminato o interrotto dall'utente. Può tornare utile se devi eseguire un comando in esecuzione in background e non vuoi contare su cron .

Importante :Quando si utilizzano i metodi precedenti, si consiglia vivamente di impostare un intervallo sufficientemente lungo da concedere un tempo sufficiente al completamento dell'esecuzione del comando, prima dell'esecuzione successiva.

Conclusione

Gli esempi in questo tutorial sono utili, ma non intendono sostituire completamente l'utilità cron. Sta a te trovare quale funziona meglio per te, ma se dobbiamo separare l'uso di entrambe le tecniche, direi questo:

  1. Usa cron quando devi eseguire comandi periodicamente anche dopo il riavvio del sistema.
  2. Utilizzare i metodi spiegati in questo tutorial per programmi/script che devono essere eseguiti all'interno della sessione utente corrente.

Come sempre, se hai domande o commenti, non esitare a inviarli nella sezione commenti qui sotto.


Linux
  1. Come usare il comando Su in Linux

  2. Come ripetere un comando finché non ha successo in Linux

  3. Come eseguire ripetutamente lo script bash ogni N secondi?

  4. Come configurare il lavoro CRON per l'esecuzione ogni 10 secondi in Linux?

  5. linux:come eseguire un comando in una determinata directory

Come eseguire un comando per un tempo specifico in Linux

Come eseguire un comando Linux ogni X secondi per sempre

Come eseguire periodicamente un comando in Linux usando Watch

Come eseguire più comandi Linux in un unico comando

Come eseguire più comandi Linux contemporaneamente nel terminale Linux

Come posso guardare i feed delle mie webcam su Linux?