Se ti ritrovi a eseguire lo stesso comando ancora e ancora, potrebbe esserci un modo migliore.

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, puoi monitorare le attività del sistema in tempo reale come accessi utente, 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 ne interrompi manualmente l'utilizzo CTRL+C.

Guarda Sintassi dei comandi

La sintassi del comando watch è:

watch options 

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 il -N opzione seguita dall'intervallo di tempo in secondi.

watch -n 

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

watch -n 5 

Evidenzia le modifiche tra gli aggiornamenti

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

watch -d

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 usando il file -T opzione:

watch -t 

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. Il comando dell'orologio -B l'opzione riproduce un segnale acustico se il comando restituisce un'uscita diversa da zero.

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 il file -G opzione. Questa opzione è molto utile negli scenari in cui si attendono determinate modifiche nell'output.

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 arriva, il comando watch smetterà di funzionare e il messaggio il file è 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 di comando who che elenca gli utenti che hanno effettuato l'accesso. Una volta effettuato l'accesso, il comando watch si interromperà e verrà visualizzato 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.