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
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).
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’
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.