Introducción
Watch se utiliza para ejecutar cualquier comando arbitrario a intervalos regulares y muestra el resultado del comando en la ventana de la terminal.
Es útil cuando necesita ejecutar un comando repetidamente y observar cómo cambia la salida del comando con el tiempo. Por ejemplo, puede usar el comando watch para monitorear el tiempo de actividad del sistema o el uso del disco.
La utilidad watch es parte del procps
(o procps-ng
) que está preinstalado en casi todas las distribuciones de Linux.
Cómo usar el comando Watch
La sintaxis del comando watch es la siguiente:
watch [OPTIONS] COMMAND
Para ilustrar mejor cómo funciona el comando watch, ejecutemos el comando date
watch date
Debería ver una pantalla similar a la siguiente:
Every 2.0s: date TEST-SERVER-1: Sat Dec 7 18:15:37 2019
Sat Dec 7 18:15:37 CET 2019
Como puede ver en la imagen de arriba, el comando watch borra temporalmente todo el contenido del terminal y comienza a ejecutar el comando dado a intervalos regulares. Si se usa sin ninguna opción, watch ejecutará el comando especificado cada dos segundos.
En la parte superior izquierda del encabezado de la pantalla se puede ver el intervalo de actualización del reloj y el comando ejecutado ( Every 2.0s: date
), mientras que en la parte superior izquierda el reloj muestra las corrientes de hora y fecha. Si desea deshabilitar el encabezado, use la -t
( –no-title
).
La salida del comando especificado se muestra en la pantalla y se actualiza regularmente cada dos segundos.
Para salir del comando de vigilancia, simplemente presione la combinación de Ctrl+C
También puede configurar el reloj para salir cuando cambie la salida del comando usando la -g
( –chgexit
).
En las siguientes secciones, veremos las opciones de comando Watch más utilizadas.
Cómo cambiar el intervalo de tiempo
¿Qué sucede si el intervalo de actualización predeterminado de dos segundos no se ajusta al caso de uso?
La -n
( --interval
) seguida del número de segundos deseado le permite cambiar el intervalo de tiempo entre actualizaciones:
watch -n INTERVAL_IN_SECONDS COMMAND
Por ejemplo, para monitorear el uso del espacio en disco con el comando df y actualizar la pantalla cada cinco segundos, ejecutaría:
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
Resalta la diferencia entre las actualizaciones.
La -d
( --difference
) hará que el reloj resalte los cambios entre actualizaciones posteriores.
watch -d COMMAND
Supongamos que desea monitorear el tiempo de actividad del sistema ejecutando el comando uptime para resaltar los cambios, use el siguiente 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
Si desea resaltar los aspectos más destacados para que la pantalla sea más clara, use el =cumulative
con la opción -d
Esto significa que los valores que alguna vez se hayan cambiado permanecerán resaltados.
watch -d=cumulative uptime
Comandos con tubería
Si desea ejecutar un comando que contiene tuberías, debe encerrarlo entre comillas simples o dobles. Si no incluye el comando completo entre comillas, watch solo ejecutará el primer comando y luego pasará la salida al siguiente comando en la canalización.
watch 'COMMAND_1 | COMMAND_2'
Por ejemplo, el siguiente comando monitoreará el número de conexiones activas en el puerto 80
usando una combinación de las utilidades netstat
y grep
watch "netstat -anp | grep -c ':80\b.*LISTEN'"
Conclusión
A estas alturas ya debería tener un buen conocimiento de cómo utilizar el watch
Puede ver todas las watch
con el siguiente comando:
man watch