user@devops:~$ cat README.md
mount-watch
# Descripción
mount-watch (cpp-mount-watch) es un monitor de sistemas de archivos de Linux escrito en C++23 sin dependencias externas. Lee /proc/mounts del kernel y para cada punto de montaje llama a statvfs(2) para obtener el uso real: bloques totales (f_blocks x f_frsize), usados (f_blocks - f_bfree) y disponibles para el usuario (f_bavail, sin reserva root). Filtra por defecto los filesystems pseudo/sinteticos (proc, sysfs, devpts, cgroup, overlay, squashfs...) y muestra solo los de datos reales (ext4, xfs, btrfs, vfat, tmpfs...) con --all para verlos todos. Decodifica los escapes octales de /proc/mounts (\040 = espacio, \134 = backslash). Detecta montajes de solo-lectura por el flag ro en las opciones. Modo watch (--watch N) con refresco periodico y delta de espacio disponible por filesystem entre frames ((+N)/(-N) en bytes), --timeout T para salida automatica (ideal para cron). Salida JSON (--json) con snapshot completo: ts, filesystems, total_bytes, used_bytes, avail_bytes y mounts[] con device, mountpoint, fstype, ro, ok, total, used, avail y use_pct, validada con python3 -m json.tool. --demo con datos sinteticos realistas (6 filesystems + 2 sinteticos ocultos) para contenedores/VMs. --no-color con paleta ANSI mutable que se vacia por completo. 30 tests de auto-verificacion (--selftest): decodificacion de escapes, filtro de tipos, statvfs real sobre /, unidades humanas, consistencia de totales, JSON con llaves balanceadas, deltas de watch y renderizado de tabla. Cero dependencias: compilacion directa con g++ -std=c++23.
# Características principales
$ Lectura de /proc/mounts + statvfs(2) por punto de montaje: total, usado, disponible (f_bavail sin reserva root) y % de uso real
$ Filtro de filesystems pseudo/sinteticos (proc, sysfs, devpts, cgroup, overlay, squashfs...) con --all para verlos todos
$ Decodificacion de escapes octales de /proc/mounts (\040 = espacio, \134 = backslash) y deteccion de montajes read-only por el flag ro
$ Modo watch (--watch N) con delta de espacio disponible por filesystem entre frames y --timeout T para salida automatica (cron)
$ Salida JSON (--json) con snapshot completo validada con python3 -m json.tool
$ --demo con datos sinteticos realistas (6 filesystems + 2 sinteticos ocultos) para contenedores/VMs
$ --no-color con paleta ANSI mutable (grep del byte ESC = 0) y colores de uso (verde < 75 %, amarillo 75-90 %, rojo >= 90 %)
$ 30 tests de auto-verificacion (--selftest): escapes, filtro, statvfs, unidades, JSON, deltas y tabla
# Galería
# Tecnologías utilizadas