Linux: Ejecuta y visualiza comandos periódicamente con ‘watch’

Antes de conocer el comando watch de Linux, si por ejemplo quería revisar cada pocos segundos las consultas MySQL que se estaban ejecutando en una máquina, tenía que estar continuamente ejecutando el comando en la terminal para ver la salida del mismo:

# mysqladmin processlist -u root -pxxxx
+--------+-----------+-----------+-------+---------+-------+-------+------------------+
| Id     | User      | Host      | db    | Command | Time  | State | Info             |
+--------+-----------+-----------+-------+---------+-------+-------+------------------+
| 205709 | root      | localhost |       | Query   | 0     |       | show processlist |
+--------+-----------+-----------+-------+---------+-------+-------+------------------+

# mysqladmin processlist -u root -pxxxx
+--------+-----------+-----------+-------+---------+-------+-------+------------------+
| Id     | User      | Host      | db    | Command | Time  | State | Info             |
+--------+-----------+-----------+-------+---------+-------+-------+------------------+
| 205709 | root      | localhost |       | Query   | 0     |       | show processlist |
+--------+-----------+-----------+-------+---------+-------+-------+------------------+

# mysqladmin processlist -u root -pxxxx
+--------+-----------+-----------+-------+---------+-------+-------+------------------+
| Id     | User      | Host      | db    | Command | Time  | State | Info             |
+--------+-----------+-----------+-------+---------+-------+-------+------------------+
| 205709 | root      | localhost |       | Query   | 0     |       | show processlist |
+--------+-----------+-----------+-------+---------+-------+-------+------------------+

Esta lógicamente no es la forma óptima de realizar la tarea. En el momento que necesitamos supervisar la salida de un comando periódicamente o ejecutarlo, lo mejor es utilizar “watch”. Watch es un comando que permite especificar un intervalo de tiempo, que será el que especificará cada cuanto ejecutaremos el comando que pasamos como argumento.

Si quisiera ejecutar el comando anterior cada 4 segundos y ver su salida por pantalla, podría hacerlo del siguiente modo:

# watch -n 4 'mysqladmin processlist -u root -pxxxx'

Y automáticamente vería lo siguiente, que refrescaría cada 4 segundos (el intervalo de segundos se especifica con la opción -n , por defecto 2 segundos):

Every 4,0s: mysqladmin processlist -u root -pxxxxx                                         Sat Oct 24 19:14:27 2009

+--------+-----------+-----------+-------+---------+-------+-------+------------------+
| Id     | User      | Host	 | db    | Command | Time  | State | Info             |
+--------+-----------+-----------+-------+---------+-------+-------+------------------+
| 205717 | root      | localhost |	 | Query   | 0     |	   | show processlist |
+--------+-----------+-----------+-------+---------+-------+-------+------------------+

A partir de aquí ya podéis encontrarle muchas más utilidades, como por ejemplo ver cada 2 segundos la memoria utilizada:

# watch free -m

O ver como cambia el contenido de una carpeta en concreto:

# watch -d ls -l 

En definitiva, un excelente comando que puede resultar de gran utilidad en el día a día.

5 comentarios en “Linux: Ejecuta y visualiza comandos periódicamente con ‘watch’

  1. Gracias, hacía tiempo que buscaba esto para mi macbook y poder tener los dos monitores y que cuando quite el miniDVI se percate enseguida, sabía que era una orden lo que no me acordaba bien como era. Saludos

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *