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