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.
- http://www.ibm.com/developerworks/linux/library/l-ubuntu-inotify/index.html
- http://www.infoq.com/articles/inotify-linux-file-system-event-monitoring
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 $#