watch
Repite un comando cada cierto tiempo y refresca el resultado en pantalla.
Mantiene tu comando corriendo y vuelve a dibujar el resultado cada cierto tiempo, para que veas los cambios sin copiar y pegar la orden una y otra vez. Lo usas para vigilar el espacio en disco, ver si sube el uso de memoria, seguir una compilación o estar pendiente de un archivo de log. Viene incluido en el paquete procps, que ya está instalado en tu sistema.
watch [opciones] COMANDOwatch repite el comando cada cierto tiempo sin volver a preguntarte. Si le das uno que modifica algo, eso pasa cada 5 o 10 segundos sin que vuelvas a confirmarlo. Úsalo solo con órdenes que solo leen, como ls, df, free, ps o tail. Para salir presiona Ctrl+C.
Despiece
6 ejemplosVigilar una carpeta
| N.º | Pieza | Tipo | Qué hace |
|---|---|---|---|
| 1 | watch | Comando | El comando que repite otro y refresca su salida. |
| 2 | ls | Comando | El comando que quieres repetir. |
| 3 | -l | Opción | Pide el detalle: permisos, dueño, tamaño y fecha. |
Cada 2 segundos se redibuja la lista de la carpeta, y ves aparecer los archivos nuevos sin tocar nada. Para salir presiona Ctrl+C. Encima del comando aparece el encabezado con cada cuánto repite, el comando exacto y la hora.
Cambiar cada cuánto repite
| N.º | Pieza | Tipo | Qué hace |
|---|---|---|---|
| 1 | watch | Comando | El comando que repite otro y refresca su salida. |
| 2 | -n | Opción | Define el intervalo entre repeticiones. |
| 3 | 5 | Valor | Segundos de espera entre cada ejecución. |
| 4 | df | Comando | Muestra el espacio libre de los discos. |
| 5 | -h | Opción | Muestra los tamaños en gigas y megas, no en bloques de 1024. |
La tabla de espacio en disco se actualiza cada 5 segundos. Es la forma rápida de detectar qué carpeta está llenando el disco, porque ves el porcentaje cambiar frente a ti. El mínimo que acepta es 0.1 segundos.
Ver solo lo que cambió
| N.º | Pieza | Tipo | Qué hace |
|---|---|---|---|
| 1 | watch | Comando | El comando que repite otro y refresca su salida. |
| 2 | -d | Opción | Resalta en color lo que cambió desde la ejecución anterior. |
| 3 | free | Comando | Muestra el uso de la memoria y del swap. |
| 4 | -h | Opción | Muestra los tamaños en gigas y megas. |
Cada cambio se pinta de otro color, así que a simple vista ves si la memoria o el swap están subiendo o bajando. Con -d permanente (watch -d=permanent) los colores se quedan, para cuando quieras comparar después dos ejecuciones.
Quitar el encabezado
| N.º | Pieza | Tipo | Qué hace |
|---|---|---|---|
| 1 | watch | Comando | El comando que repite otro y refresca su salida. |
| 2 | -t | Opción | Oculta el encabezado y el renglón en blanco de abajo. |
| 3 | date | Comando | Muestra la fecha y la hora del sistema. |
En pantalla solo aparece la fecha y la hora, sin el intervalo ni el comando arriba. Queda como un reloj limpio, que es justo lo que se busca en una segunda terminal.
Revisar si hay internet
| N.º | Pieza | Tipo | Qué hace |
|---|---|---|---|
| 1 | watch | Comando | El comando que repite otro y refresca su salida. |
| 2 | -n | Opción | Define el intervalo entre repeticiones. |
| 3 | 2 | Valor | Segundos entre cada intento. |
| 4 | ping | Comando | Manda un paquete para ver si hay respuesta. |
| 5 | -c | Opción | Deja de hacer pruebas tras cierta cantidad de paquetes. |
| 6 | 1 | Valor | Un solo paquete por ejecución: watch es quien repite. |
| 7 | 1.1.1.1 | Argumento | La dirección del servidor de Cloudflare que responde a pings. |
Un ping cada 2 segundos, con el tiempo de respuesta de cada intento. El -c 1 es importante: sin él, cada repetición se quedaría colgada en el ping esperando más paquetes y nunca llega a la siguiente.
Saber si un servicio está arriba
| N.º | Pieza | Tipo | Qué hace |
|---|---|---|---|
| 1 | watch | Comando | El comando que repite otro y refresca su salida. |
| 2 | -n | Opción | Define el intervalo entre repeticiones. |
| 3 | 30 | Valor | Segundos entre cada consulta de estado. |
| 4 | "systemctl is-active ssh" | Valor | El comando que se repite. Aquí las comillas son opcionales, pero es buena costumbre: se vuelven obligatorias cuando el comando lleva un pipe |. |
Cada medio minuto aparece active si el servicio está corriendo, o inactive si no. Si quieres que watch se cierre solo en cuanto el servicio falle, agrega -e.
Opciones
Las que sí vas a usar| Opción | Qué hace |
|---|---|
| -n--interval=SEGUNDOS | Cada cuántos segundos se repite el comando. Sin esta opción usa 2 segundos. |
| -d--differences | Resalta lo que cambió respecto a la ejecución anterior. Es la más útil cuando vigilas un log o una lista que se mueve. |
| -t--no-title | Quita el encabezado con el intervalo, el comando y la hora, dejando solo la salida. |
| -b--beep | Suena una campanita cuando el comando termina con error. |
| -e--errexit | Cierra watch en cuanto el comando devuelve un error, en vez de seguir reintentando. |
| -g--chgexit | Cierra watch cuando la salida del comando cambie. |
| -x--exec | Ejecuta el comando directamente, sin pasar por una shell intermedia. Es más seguro, pero pierde los pipes y los comodines. |
Fallas comunes
| Falla | Remedio |
|---|---|
| Presionar Ctrl+Z para salir de watch. | Ctrl+Z no lo cierra: lo pausa y lo deja suspendido en segundo plano (lo verías con jobs). Para salir de verdad usa Ctrl+C. Si ya lo pausaste, regrésalo con fg y luego Ctrl+C. |
| Meterle un pipe sin comillas. | En watch -n 5 ls -l | tee lista.txt el pipe le pertenece a watch, no al comando: estás guardando la salida de watch, no la de ls. Para que el pipe sea parte de lo que se repite, entrecomilla el comando entero: watch -n 5 "ls -l | wc -l". |
| Esperar que se detenga cuando el comando falla. | watch repite el comando aunque termine con error, así que puede quedarse ahí indefinidamente. Si lo que quieres es que se cierre al primer fallo, agrega -e: watch -n 10 -e systemctl is-active nginx. |
| Esperar que funcionen los alias y las funciones del comando. | watch no corre tu comando en la shell interactiva, lo pasa a sh -c. Por eso no funcionan los alias que definiste en .bashrc ni las funciones: sí funcionan los programas que estén en el PATH. Con -x lo ejecuta directo, sin shell intermedia. |
Preguntas frecuentes
- ¿Cómo ejecuto un comando cada 5 segundos?
- Con watch -n 5 y el comando que quieras. El -n es el intervalo en segundos; si no lo pones, watch repite cada 2 segundos. Para salir presionas Ctrl+C.
- ¿Cómo veo solo lo que cambia?
- Agrega -d: watch -d free -h. Cada ejecución se pinta con otro color respecto a la anterior, y así ves de inmediato qué se movió. Con -d permanent, que se escribe -d=permanent, los colores se quedan para comparar después.
- ¿Cómo salgo de watch?
- Con Ctrl+C. Ctrl+Z no lo cierra: solo lo pausa y lo deja suspendido. Si ya lo pausaste, tráelo con fg y ciérralo con Ctrl+C.
- ¿Cuál es la diferencia entre watch y htop?
- htop es un monitor de todo el sistema ya hecho: te da CPU, memoria, Swap y la lista de procesos ordenada. watch es genérico: repite el comando que le digas. Sirve cuando quieres vigilar algo puntual, como el espacio en disco o un archivo de log.
- ¿Puedo poner un pipe dentro de watch?
- Sí, pero con todo el comando entre comillas: watch -n 5 "ls -l | wc -l". Sin las comillas, el pipe se lo queda watch y no el comando que repite. Recuerda también que watch pasa todo a sh -c, así que ahí no valen tus alias.