Los administradores de sistemas viven en un entorno donde todo cambia rápido: un disco que se llena sin previo aviso, un servicio que empieza a saturar sockets, o un proceso que dispara la carga del servidor. En este contexto, contar con herramientas que permitan vigilar en tiempo real lo que ocurre en el sistema es clave para detectar problemas antes de que se conviertan en desastres.
Entre esas utilidades se encuentra watch
, un comando simple pero tremendamente eficaz que forma parte del arsenal básico de cualquier sysadmin. Su magia está en algo muy concreto: ejecutar periódicamente un comando y mostrar su salida en pantalla, actualizándola cada pocos segundos.
¿Qué hace exactamente watch
?
El funcionamiento de watch
es muy directo:
- Ejecuta un comando.
- Refresca la salida en pantalla con una cadencia determinada (por defecto, cada 2 segundos).
- Permite observar la evolución de un estado o recurso en tiempo real.
La opción -n
define el intervalo de refresco en segundos. Así, con -n 1
, el comando se ejecutará cada segundo, lo que lo convierte en un aliado perfecto para monitorizar cambios rápidos.
Ejemplos prácticos para administradores de sistemas
1. Controlar el uso de discos en vivo
watch -n 1 'df -h'
Muestra el espacio usado en los sistemas de archivos cada segundo. Ideal cuando se sospecha que un proceso está consumiendo almacenamiento de forma acelerada.
Uso típico: detectar logs que crecen sin control o directorios temporales que se disparan.
2. Vigilar puertos y conexiones de red
watch -n 1 'ss -tulpn'
Refresca en vivo las conexiones TCP y UDP abiertas en el servidor.
Uso típico: comprobar cómo responde un servicio recién levantado, identificar intentos de conexión masivos o confirmar si un puerto se libera tras reiniciar un demonio.
3. Monitorizar procesos con ps
watch -n 1 'ps aux --sort=-%cpu | head -10'
Lista los 10 procesos que más CPU consumen, actualizando cada segundo.
Uso típico: diagnosticar picos de carga inesperados y detectar procesos fuera de control.
4. Observar cambios en archivos de configuración o directorios
watch -n 1 'ls -lh /etc/nginx/conf.d/'
Refresca en tiempo real la lista de archivos en un directorio crítico.
Uso típico: confirmar modificaciones en configuraciones distribuidas o monitorizar si un proceso genera nuevos ficheros.
watch
: útil tanto en el desastre como en la solución
El poder de watch
radica en su simplicidad. Como dice medio en broma la jerga de los sysadmins:
- Sirve para ver cómo crece el desastre: un disco llenándose, miles de conexiones apareciendo de golpe…
- O para ver cómo lo arreglas: comprobar que al aplicar un parche, reiniciar un servicio o borrar un directorio problemático, las métricas empiezan a estabilizarse.
Esa visión de “antes y después” es invaluable durante una intervención en caliente.
Opciones interesantes de watch
-d
: resalta los cambios en la salida entre una ejecución y otra. Muy útil para detectar qué valores se modifican. bashCopiarwatch -d -n 1 'df -h'
-t
: elimina la cabecera dewatch
(que indica intervalo y hora de refresco), dejando solo la salida del comando.-g
: hace quewatch
se detenga cuando la salida cambie.
Buenas prácticas
- Intervalos razonables: no siempre es necesario refrescar cada segundo. Para ciertos comandos, 5 o 10 segundos son suficientes.
- Filtrar resultados: combinar con
grep
oawk
evita ruido y centra la atención en lo importante. bashCopiarwatch -n 1 "ss -tulpn | grep 443"
- Evitar abusos en producción: aunque
watch
es ligero, ejecutar comandos pesados con demasiada frecuencia puede añadir carga innecesaria en servidores críticos.
Conclusión
watch
es una de esas utilidades que parecen menores hasta que se necesitan. No sustituye a herramientas de monitorización como Prometheus, Nagios o Zabbix, pero se convierte en un cuchillo suizo para diagnósticos inmediatos.
En plena crisis o en una simple verificación, watch -n 1
puede marcar la diferencia entre trabajar a ciegas y tener el pulso del sistema en tiempo real.
Preguntas frecuentes
¿Qué diferencia hay entre usar watch
y un bucle while
en bash?
Ambos permiten ejecutar comandos periódicamente, pero watch
añade formato, limpieza de pantalla y opciones prácticas como resaltar cambios.
¿Puedo usar watch
en scripts automatizados?
Aunque está pensado para uso interactivo, sí puede integrarse en scripts, especialmente para tareas de debugging. Para monitorización automatizada convienen otras herramientas.
¿Qué pasa si ejecuto un comando muy pesado con watch -n 1
?
Podría añadir carga significativa al sistema. En esos casos se recomienda aumentar el intervalo (-n 5
, -n 10
) o limitar la salida.
¿Es watch
multiplataforma?
Sí, está disponible en la mayoría de distribuciones Linux y sistemas tipo Unix. En Windows puede usarse a través de WSL o herramientas similares.