Ejecutar programas a intervalos regulares con watch

El comando watch nos permite ejecutar comandos o scripts de forma periódica desde la terminal. Se puede utilizar con cualquier tipo de programa, permitiendo por ejemplo monitorizar procesos, listas de archivos/datos o conexiones a internet, sin la necesidad de repetir el mismo programa una y otra vez.

Así la sintaxis del programa sería:

watch <comando>

Si queremos consultar por ejemplo el consumo de memoria cada dos segundos, que es la opción de tiempo por defecto, que trae watch podemos hacer

watch vmstat -sSM

Ese intervalo de tiempo en algunos casos  puede ser demasiado corto o extenso, lo podemos modificar fácilmente añadiendo la opción -n seguido del tiempo en segundos

watch -n <segundos> <comando>

Supongamos que queremos saber, si a nuestro vecino le gusta jugar con el aircrack, podemos ejecutar nmap ó fping y detectar todos los equipos conectados al router cada 5 minutos.

watch -n 300 fping -s -g 192.168.1.0/24

Como los resultados suelen ser muy extensos puede ser conveniente redirigir la salida de la terminal a un archivo de texto así nos quedaría

watch -n 300 fping -s -g 192.168.1.0/24>archivo

Con watch también podemos resaltar las diferencias que se producen al ir ejecutando un programa, con la opción -d

watch -d <comando>

Por ej:

watch -d date

El comando watch viene por defecto en todas las distros linux, si queréis consultar las opciones completas lo podéis hacer, ejecutando watch --h

3 thoughts on “Ejecutar programas a intervalos regulares con watch”

  1. Swicher says:

    También sirve para ver la salida de comandos concatenados, para ello solo basta con poner todo entre comillas, así por ejemplo:
    watch 'ls | grep -i .html | wc -l'
    En este caso lista los archivos del directorio actual, pasa a grep para buscar solo los archivos con extensión .html y lo que se muestra es el numero de lineas de la entrada estándar (o lo que es lo mismo, la cantidad de archivos html del directorio actual).

  2. Bertholdo says:

    Hola Replicante y blog.
    ¿Es seguro usar el comando ‘watch’ con privilegios de administrador (contraseña)??, ya que se repetirá constantemente
    Por ejemplo, el comando hddtemp requiere de ese privilegio para mostrar la Tº del disco duro, por ejemplo esto:
    watch -n 20 ‘sensors && sudo hddtemp /dev/sda && free -h’

    1. tannhausser says:

      En realidad en ese comando lo que estás ejecutando como root es hddtemp y si ese es su comportamiento predeterminado no veo mayor problema.

      Otra cosa es el asunto de añadir comandos con &&, no estoy muy seguro de que funcione en watch.

Deja un comentario