linux filesystems inotify

inotify linux



La mejor manera de monitorear los cambios del sistema de archivos en Linux (3)

Estoy pensando en crear una utilidad de sincronización de sistema de archivos que monitoree la actividad del sistema de archivos, pero parece que algunas de las funciones de monitoreo del sistema de archivos en el kernel de Linux están obsoletas o no están completamente equipadas.

Lo que mi investigación encontró

dnotify vino primero con notificación tiene las características de notificar para eliminar, modificar, acceder, atribuir, crear, mover puede determinar el descriptor de archivo, sin embargo ahora está desactualizado por inotify y fanotify

inotify salió en segundo lugar con notificación tiene las características de notificar acceso, modificar, atribuir, cerrar, mover, eliminar, crear, etc. Sin embargo, no le proporciona un descriptor o proceso de archivo y será obsoleto por fanotify

fanotify es el último que informa de acceso, modificación, cierre, pero no informa de eliminación o atributos, pero proporciona descriptor de archivo

Necesito una forma de determinar el proceso (por ejemplo, desde fd) y cosas como eliminar, modificar, atributos, etc. para sincronizar todo, ¿alguna sugerencia? Desafortunadamente, dnotify parece el mejor, pero el más anticuado


Hay una buena biblioteca que proporciona descriptores de archivos o procesos con inotify . Tiene su propia API de C y el inotifywatch util (bueno para scripts), todo en el paquete inotify-tools.

Estoy totalmente en desacuerdo con que fanotify quedará desactualizado.

FAM y gamin son muy buenas opciones de servidor / cliente. Ambos utilizan inotify como primera opción sobre los dnotify y sondeos obsoletos. Prefiero gamin


incron es una herramienta útil para las operaciones como esta. Puede crear un archivo de configuración para el directorio o archivo que desea ver.

http://inotify.aiken.cz/?section=incron&page=about&lang=en

en ubuntu

sudo apt-get install incron

/etc/incron.d/mynotification.conf

# notification for user creation /home IN_ALL_EVENTS /opt/notify_user_created.sh $#


Deberías usar una biblioteca en lugar de inotify y amigos, algo como FAM o Gamin (es la misma API para ambos). Esto hará que su programa sea portátil a otros Unixes.