08 enero 2020

Ejecutar y visualizar comandos 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                   daelomin.desierto.bal: Thu Nov 21 06:49:44 2019

+--------+-----------+-----------+-------+---------+-------+-------+------------------+
| 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.

Tomado de: https://rm-rf.es/linux-ejecuta-visualiza-comandos-periodicamente-watch/

No hay comentarios:

Publicar un comentario