watch (Unix)
watch es un comando de la familia de los Sistemas Operativos Unix. Sirve para ejecutar periódicamente un comando y mostrar lo que este imprime en pantalla completa, permitiendo ver claramente como cambian los datos tras cada ejecución.[1]
Es muy útil para hacer monitoreos del estado de un sistema como por ejemplo el uso de recursos, procesos que están corriendo, etc, así como también para hacer el seguimiento de otro tipo de información que se quiera examinar. Para lograr esto último el usuario puede obtener la información que desea monitorizar con el uso de tuberías o bashscripts.
Modo de uso
La invocación del comando watch tiene el siguiente formato:
watch [PARÁMETROS..] COMANDO
Cuando se ejecuta watch sin indicar parámetros, este ejecuta cada dos segundos el comando indicado.
En cuanto al comando, es posible pasarle uno que incluya parámetros, haciendo uso de las comillas dobles (") o simples ('). También haciendo uso de estas comillas podemos aprovechar las tuberías, obteniendo un mejor resultado al momento de procesar la información.
En algunos casos de que la interpretación del comando indicado sea errónea por el uso de las comillas, watch ofrece la posibilidad de delegar su ejecución con exec, haciendo uso del parámetro (-x o --exec).
Es importante aclarar que watch se ejecuta de forma ininterrumpida, y la única forma de finalizarlo es con la combinación de teclas como es Ctrl+C o bien de alguna forma externa, como por ejemplo usando el comando kill o a fines.
Sus parámetros principales son:
- -n N, --interval=N
- Establece cada N segundos se refresca la pantalla. Este parámetro considera a N, como el tiempo entre que finaliza la ejecución del comando y el próximo llamado al mismo. Para forzar a ejecutar de forma más precisa use -p o --precise.
- -p, --precise
- Fuerza a que el refresco de pantalla se logre en los segundos indicados en el parámetro -n o --interval.
- -d, --differences=N
- Remarca la diferencia del texto entre cada salida. Es posible indicarle que remarque entre N refrescos las diferencias. Vale aclarar que esta función no es perfecta.
- -b, --beep
- Realiza un beep en el altavoz del sistema, si la ejecución del comando termina con errores.
- -c, --color
- Interpreta los códigos de escape de color ANSI del texto que se visualiza.
- -e, --errexit
- Obliga a watch a cerrarse si el comando' se ejecuta con errores.
- -t, --no-title
- Indica que no se muestre la frecuencia de refresco, el comando y la hora cuando se ejecuta watch.
- -x. --exec
- Ejecuta el comando vía exec.
Ejemplos
Monitorizar el uso de espacio en las distintas unidades del Sistema:
watch "df -h"
Monitorizar los procesos de navegadores web como firefox, midori o chromium cada 5 segundos mostrando las diferencias:
watch -n 5 -d "ps -ely | grep -E 'firefox|midori|chromium-browse'"
Nota: con ps se listan todos los procesos, y con grep se logra aislar cualquiera de las tres variantes.
Monitorizar los 20 últimos registros más recientes de la página especial Cambios Recientes de Wikipedia en español cada 10 segundos:
watch -n 10 "wget -qO- 'http://es.wikipedia.org/wiki/Especial:CambiosRecientes' | grep -m 20 \
'mw-changeslist-line-not-watched' | w3m -dump -T text/html -cols 160"
Nota: El anterior comando requiere tener instalado w3m. El uso de la "\" es para garantizar la ejecución por más que este en dos líneas el comando.
Se puede visualizar el resultado del comando anterior aquí: Watch - Ejemplo de monitorización en Cambios Recientes esWP