5 mar. 2016

Monitoriza comandos en Linux con watch



Estaba tratando de recuperar archivos de una partición con problemas de error de lectura en un disco, por lo que tuve que crear una imagen .dd usando la increíble herramienta Testdisk.

Paralelamente, quería conocer el incremento del archivo de imagen que se estaba generando, con qué velocidad crecía o si se pausaba el proceso de generación. Para ello, acudí al venerable comando du que muestra el tamaño de un(los) archivo(s) en una carpeta de forma recursiva.

El problema: tenía que ejecutar el comando du manualmente cada vez que quería saber si el archivo había crecido o se había pausado. Entonces me pregunté si podría re-ejecutar cada X segundos el mismo comando para mantener en consola el crecimiento de forma "fluida" (entiendo que muchos me dirán "Hey, por shell script se podría hacer sin problemas", ergo la programación no es mi fuerte).

El comando watch cumple esa función perfectamente. Su uso es muy sencillo, y no por eso deja de ser potente (basta con ver su man). En la práctica:

watch du -sc /mnt/external/backup

Por defecto, watch ejecutará el mismo comando cada 2 segundos. Si queremos modificar el tiempo, usaremos el parámetro -n X (donde X son los segundos de "refresco"). Atención: tolera tiempos solamente mayores a 0.1 segundo.

watch -n 0.5 du -sc /mnt/external/backup

De esta forma, cada medio segundo se ejecutará el comando, manteniendo en pantalla completa el resultado de forma fluida, sin generar sucesivas líneas, manteniendo todo en un único resultado en la consola.

¡Excelente comando que me simplificó todo el trabajo!
Publicar un comentario en la entrada