Introduzione

Watch viene utilizzato per eseguire qualsiasi comando arbitrario a intervalli regolari e visualizza l'output del comando nella finestra del terminale.

È utile quando è necessario eseguire un comando ripetutamente e osservare l'output del comando cambiare nel tempo. Ad esempio, è possibile utilizzare il comando watch per monitorare il tempo di attività del sistema o l'utilizzo del disco.

L'utility watch fa parte del pacchetto procps(o procps-ng) che è preinstallato su quasi tutte le distribuzioni Linux.

Come utilizzare il comando Watch

La sintassi per il comando watch è la seguente:

watch [OPTIONS] COMMAND

Per illustrare meglio come funziona il comando watch, eseguiamo il comando date:

watch date

Dovreste visualizzare una schermata simile alla seguente:

Every 2.0s: date                                                         TEST-SERVER-1: Sat Dec  7 18:15:37 2019

Sat Dec  7 18:15:37 CET 2019

Come puoi vedere nell'immagine sopra, il comando watch cancella temporaneamente tutto il contenuto del terminale e inizia a eseguire il comando fornito a intervalli regolari. Se utilizzato senza alcuna opzione watch eseguirà il comando specificato ogni due secondi.

Nella parte in alto a sinistra dell'intestazione dello schermo puoi vedere l'intervallo di aggiornamento dell'orologio e il comando eseguito ( Every 2.0s: date), mentre nella parte in alto a sinistra l'orologio mostra l'ora e la data correnti. Se vuoi disattivare l'intestazione usa l'opzione -t( –no-title).

L'output del comando specificato viene visualizzato sullo schermo e aggiornato regolarmente ogni due secondi.

Per uscire dal comando watch, basta premere la combinazione di tasti Ctrl+C. Puoi anche impostare l'orologio per uscire quando l'output del comando cambia usando l'opzione -g( –chgexit).

Nelle sezioni seguenti, esamineremo le opzioni di comando di Watch più utilizzate.

Come modificare l'intervallo di tempo

Cosa succede se l'intervallo di aggiornamento predefinito di due secondi non è adatto al caso d'uso?

L'opzione -n( --interval) seguita dal numero di secondi desiderato consente di modificare l'intervallo di tempo tra gli aggiornamenti:

watch -n INTERVAL_IN_SECONDS COMMAND

Ad esempio, per monitorare l'utilizzo dello spazio su disco con il comando df e aggiornare lo schermo ogni cinque secondi, eseguiresti:

watch -n 5 df -h
Every 5.0s: df -h                                                        TEST-SERVER-1: Sat Dec  7 18:19:19 2019

Filesystem      Size  Used Avail Use% Mounted on
udev            959M     0  959M   0% /dev
tmpfs           195M  652K  194M   1% /run
/dev/sda1        19G  2.3G   16G  13% /
tmpfs           973M     0  973M   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           973M     0  973M   0% /sys/fs/cgroup
tmpfs           195M     0  195M   0% /run/user/0

Evidenziare la differenza tra gli aggiornamenti

L' opzione -d( --difference), farà sì che watch evidenzi le modifiche tra gli aggiornamenti successivi.

watch -d COMMAND

Supponiamo che tu voglia monitorare il tempo di attività del sistema eseguendo il comando uptime per evidenziare le modifiche utilizzare il seguente comando:

watch -d uptime
Every 2.0s: uptime                                                       TEST-SERVER-1: Sat Dec  7 18:21:02 2019

 18:21:02 up 7 days,  1:49,  1 user,  load average: 0.00, 0.00, 0.00

Se si desidera che i punti salienti siano evidenziati per rendere più chiara la visualizzazione, utilizzare il parametro =cumulative con l'opzione -d. Ciò significa che tutti i valori che sono mai stati modificati rimarranno evidenziati.

watch -d=cumulative uptime

Comandi con Pipe

Se si desidera eseguire un comando che contiene pipe, è necessario racchiuderlo tra virgolette singole o doppie. Se non racchiudi il comando completo con le virgolette, watch eseguirà solo il primo comando e quindi eseguirà il piping dell'output al comando successivo nella pipeline.

watch 'COMMAND_1 | COMMAND_2'

Ad esempio, il comando seguente monitorerà il numero di connessioni attive sulla porta 80 utilizzando una combinazione delle utilità netstat e grep:

watch "netstat -anp | grep -c ':80\b.*LISTEN'"

Conclusione

Ormai dovresti avere una buona conoscenza di come usare il comando watch Linux . Puoi visualizzare tutte le opzioni di watch con il seguente comando:

man watch