Comandos LinuxExplicados en español
/
Ficha56 / 104
Categoría
Procesos
Ejemplos
6
Ver también
htop · top · ps · free

watch

watch (observar)

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.

Sintaxiswatch [opciones] COMANDO
Precaución

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

§ 1

Despiece

6 ejemplos
Vigilar una carpeta

Vigilar una carpeta

3 piezas
Lámina01 / 06
Comandowatch ls -l
Piezas3
Escala1:1
N.ºPiezaTipoQué hace
1watchComandoEl comando que repite otro y refresca su salida.
2lsComandoEl comando que quieres repetir.
3-lOpciónPide el detalle: permisos, dueño, tamaño y fecha.
Resultado

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

5 piezas
Lámina02 / 06
Comandowatch -n 5 df -h
Piezas5
Escala1:1
N.ºPiezaTipoQué hace
1watchComandoEl comando que repite otro y refresca su salida.
2-nOpciónDefine el intervalo entre repeticiones.
35ValorSegundos de espera entre cada ejecución.
4dfComandoMuestra el espacio libre de los discos.
5-hOpciónMuestra los tamaños en gigas y megas, no en bloques de 1024.
Resultado

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ó

4 piezas
Lámina03 / 06
Comandowatch -d free -h
Piezas4
Escala1:1
N.ºPiezaTipoQué hace
1watchComandoEl comando que repite otro y refresca su salida.
2-dOpciónResalta en color lo que cambió desde la ejecución anterior.
3freeComandoMuestra el uso de la memoria y del swap.
4-hOpciónMuestra los tamaños en gigas y megas.
Resultado

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

3 piezas
Lámina04 / 06
Comandowatch -t date
Piezas3
Escala1:1
N.ºPiezaTipoQué hace
1watchComandoEl comando que repite otro y refresca su salida.
2-tOpciónOculta el encabezado y el renglón en blanco de abajo.
3dateComandoMuestra la fecha y la hora del sistema.
Resultado

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

7 piezas
Lámina05 / 06
Comandowatch -n 2 ping -c 1 1.1.1.1
Piezas7
Escala1:1
N.ºPiezaTipoQué hace
1watchComandoEl comando que repite otro y refresca su salida.
2-nOpciónDefine el intervalo entre repeticiones.
32ValorSegundos entre cada intento.
4pingComandoManda un paquete para ver si hay respuesta.
5-cOpciónDeja de hacer pruebas tras cierta cantidad de paquetes.
61ValorUn solo paquete por ejecución: watch es quien repite.
71.1.1.1ArgumentoLa dirección del servidor de Cloudflare que responde a pings.
Resultado

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

4 piezas
Lámina06 / 06
Comandowatch -n 30 "systemctl is-active ssh"
Piezas4
Escala1:1
N.ºPiezaTipoQué hace
1watchComandoEl comando que repite otro y refresca su salida.
2-nOpciónDefine el intervalo entre repeticiones.
330ValorSegundos entre cada consulta de estado.
4"systemctl is-active ssh"ValorEl comando que se repite. Aquí las comillas son opcionales, pero es buena costumbre: se vuelven obligatorias cuando el comando lleva un pipe |.
Resultado

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.

§ 2

Opciones

Las que sí vas a usar
OpciónQué hace
-n--interval=SEGUNDOSCada cuántos segundos se repite el comando. Sin esta opción usa 2 segundos.
-d--differencesResalta 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-titleQuita el encabezado con el intervalo, el comando y la hora, dejando solo la salida.
-b--beepSuena una campanita cuando el comando termina con error.
-e--errexitCierra watch en cuanto el comando devuelve un error, en vez de seguir reintentando.
-g--chgexitCierra watch cuando la salida del comando cambie.
-x--execEjecuta el comando directamente, sin pasar por una shell intermedia. Es más seguro, pero pierde los pipes y los comodines.
§ 3

Fallas comunes

FallaRemedio
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.
§ 4

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.
§ 5

Ver también