Volver a la página principal
lunes 23 septiembre 2024
136

Monitorizar en tiempo real cambios en un directorio usando inotifywait

inotifywait es una herramienta que forma parte del paquete inotify-tools, la cual permite monitorear en tiempo real los cambios que ocurren en un directorio o archivo en Linux. Es muy útil para detectar modificaciones como creación, eliminación, renombrado o acceso a archivos.

Instalación de inotifywait

Primero, asegúrate de tener inotify-tools instalado en tu sistema. Dependiendo de tu distribución de Linux, puedes instalarlo usando los siguientes comandos:

  • Debian/Ubuntu:
sudo apt install inotify-tools
  • Fedora/CentOS:
sudo yum install inotify-tools
  • Arch Linux:
sudo pacman -S inotify-tools

Uso básico de inotifywait

Para monitorear un directorio en tiempo real, puedes utilizar el comando básico:

inotifywait -m /ruta/al/directorio

Este comando:

  • -m: Mantiene inotifywait en modo "monitor", es decir, no termina después de la primera detección, sino que sigue escuchando los eventos hasta que se detenga el proceso.

Ejemplo de uso:

inotifywait -m /home/usuario/Documentos

Este comando monitoreará el directorio /home/usuario/Documentos y mostrará cualquier cambio que ocurra en tiempo real.

Tipos de eventos que puede monitorear inotifywait

Al usar inotifywait, puedes especificar qué tipo de eventos deseas monitorizar. Algunos de los eventos más comunes incluyen:

  • create: Cuando se crea un archivo o directorio.
  • modify: Cuando un archivo es modificado.
  • delete: Cuando un archivo o directorio es eliminado.
  • move: Cuando un archivo es movido o renombrado.
  • access: Cuando un archivo es accedido (leído).

Puedes monitorear eventos específicos utilizando la opción -e:

inotifywait -m -e create -e delete /home/usuario/Documentos

Este comando solo monitoreará la creación y eliminación de archivos dentro del directorio.

Mostrar detalles de los cambios

Si deseas que inotifywait te muestre más detalles, como el nombre del archivo afectado y el tipo de evento, simplemente usa el comando sin opciones adicionales, o si prefieres más filtros puedes hacer combinaciones:

inotifywait -m -e modify,create,delete /home/usuario/Documentos

Este comando mostrará las modificaciones, creaciones y eliminaciones en tiempo real dentro del directorio.

Salida típica:

/home/usuario/Documentos/ CREATE nuevo_archivo.txt
/home/usuario/Documentos/ MODIFY archivo_existente.txt
/home/usuario/Documentos/ DELETE otro_archivo.txt

Ejecución de un comando tras detectar un evento

Es posible ejecutar un comando cuando se detecta un evento específico. Por ejemplo, para ejecutar un script cuando se crea un archivo en un directorio:

inotifywait -m -e create /home/usuario/Documentos | while read path action file; do
  echo "Se ha creado el archivo '$file' en el directorio '$path'"
done

Este comando muestra un mensaje personalizado cada vez que se crea un archivo en el directorio especificado.

Compartir:
Creado por:
Author photo

Jorge García

Fullstack developer