Come eseguire periodicamente un programma utilizzando il comando Watch su Linux

A volte è necessario eseguire ripetutamente un comando o un programma per monitorare vari aspetti del sistema, come i processi in corso, l’utilizzo dello spazio su disco o gli accessi degli utenti. Il comando Linux watch ti consente di automatizzare queste attività senza doverle eseguire manualmente ancora e ancora.

Utilizzando questo comando è possibile monitorare in tempo reale le attività del sistema come accessi degli utenti, stato della rete, utilizzo della memoria e della CPU, spazio su disco, ecc. Vediamo come utilizzare il comando watch in Linux.

Cos’è il comando Watch?

Il comando watch Linux esegue ripetutamente un comando o un programma specificato, a intervalli regolari, e ne visualizza l’output nel terminale. Ciò consente di osservare i cambiamenti nell’output in tempo reale. Aggiorna l’output a ogni intervallo, sovrascrivendo l’output precedente del comando. Per impostazione predefinita, il comando si ripete ogni due secondi e continua finché non lo interrompi manualmente utilizzando Ctrl + C.

  Come trovare l'indirizzo IP del tuo router su Windows, Linux, Android, ecc.

Guarda Sintassi dei comandi

La sintassi del comando watch è:

 watch options <command> 

Sono disponibili varie opzioni della riga di comando da utilizzare con il comando watch. Se esegui il comando watch senza alcuna opzione, verrà eseguito il comando specificato ogni due secondi. Ad esempio, quanto segue ti mostrerà l’output del comando ls:

 watch ls -l ~/ 

L’output mostrerà le modifiche nell’elenco delle directory se un file viene creato, eliminato o cambia di dimensione, aggiornando l’output ogni due secondi.

Esegui un comando ogni X secondi utilizzando l’orologio

È possibile modificare l’intervallo di aggiornamento del comando watch. Ciò significa che puoi dire al comando watch di attendere x secondi prima di ripetere il comando. Per modificare l’intervallo di aggiornamento, utilizzare l’opzione -n ​​seguita dall’intervallo di tempo in secondi.

 watch -n  

Ad esempio, per eseguire un comando ogni 5 secondi, esegui:

 watch -n 5 <command> 

Evidenzia le modifiche tra gli aggiornamenti

Il comando watch sovrascrive il suo output ad ogni aggiornamento. Usando l’opzione -d, puoi anche evidenziare le modifiche tra l’output precedente e quello aggiornato.

 watch -d 

Nascondi intestazione nell’output del comando watch

Per impostazione predefinita, il comando watch visualizza un’intestazione nella parte superiore di ogni output che contiene l’intervallo di aggiornamento, il nome del comando e la data e l’ora correnti del sistema. Puoi rimuovere l’intestazione dall’output utilizzando l’opzione -t:

 watch -t <command> 

Riproduci segnali acustici in caso di errore

Quando un processo Linux termina l’esecuzione, restituisce un codice di uscita. Per convenzione, il valore è 0 in caso di successo e diverso da zero per rappresentare un errore. L’opzione -b del comando watch riproduce un segnale acustico se il comando restituisce un’uscita diversa da zero.

  Come installare JetBrains GoLand su Linux

Supponiamo che tu voglia monitorare sshd.service e ricevere una notifica quando il servizio si interrompe; useresti:

 watch -b sudo systemctl status sshd.service 

Questo comando emetterà dei segnali acustici quando il servizio si interrompe. Il segnale acustico si interromperà quando il servizio riprende. Per testarlo, apri un’altra finestra di terminale e interrompi il servizio. Verranno emessi segnali acustici costanti fino al riavvio del servizio. Tuttavia, per utilizzare questa funzionalità, è necessario che sul sistema sia installato il pacchetto bip.

Esci dal comando watch alla modifica dell’output

Puoi anche dire al comando watch di interrompere l’esecuzione e di uscire quando l’output del comando cambia. Puoi farlo usando l’opzione -g. Questa opzione è molto utile negli scenari in cui si attendono determinate modifiche nell’output.

  Come generare elenchi di parole personalizzate su Kali Linux con crunch

Una volta modificato l’output, il comando watch verrà interrotto. Puoi combinare questo utilizzo con il comando echo per visualizzare un messaggio sullo schermo.

Ad esempio, considera uno scenario in cui stai aspettando che un file arrivi nella tua directory. Il seguente comando monitorerà la directory per il file specificato. Non appena arriverà, il comando watch smetterà di funzionare e il file del messaggio arrivato verrà visualizzato sul terminale.

 watch -g "ls -l | grep filename" && echo "file arrived" 

Un altro esempio utile è una notifica quando un utente specifico accede al tuo sistema:

 watch -g "who | grep username" && echo "username logged in" 

Questo comando monitorerà l’output del comando who che elenca gli utenti che hanno effettuato l’accesso. Una volta effettuato l’accesso, il comando watch si interromperà e visualizzerà un messaggio sul terminale.

Allo stesso modo, puoi dire al comando watch di interrompere un servizio quando vengono apportate alcune modifiche a un file. Tieni presente che quando utilizzi una catena di comandi concatenata, dovrai racchiudere l’intero comando tra virgolette.

Guarda le attività nel tuo sistema Linux

Se ti ritrovi a eseguire ripetutamente lo stesso processo, considera l’utilizzo del comando watch per automatizzarlo. Ti evita di digitare frequentemente i comandi per vedere cosa è cambiato.

Puoi anche utilizzare il comando watch con altri comandi Linux per monitorare le risorse e le attività del sistema e tenere traccia delle modifiche nei file o nelle directory.