¿Cómo funciona inotify?

14

De acuerdo con Wikipedia ,

inotify es un subsistema de kernel de Linux que nota cambios en el sistema de archivos. Reemplazó el dnotify anterior.

Los programas que sincronizan archivos (como crashplan, dropbox, git) recomiendan en las guías del usuario que el usuario aumente max_user_watches( 1 , 2 , 3 ).

Por lo que entiendo sobre inotify, se le dice al sistema operativo que se ha cambiado un archivo, en lugar de requerir que el sistema operativo "vaya a buscar" los cambios.

Supongo que hay un archivo "inotify" creado en cada directorio. ¿Es esto correcto? ¿Hay alguna manera de interactuar con inotify desde la línea de comandos?

Recursos
¿Por qué los eventos de inotify son diferentes en un montaje NFS?
Inotifywait para una gran cantidad de archivos en un directorio

Spuder
fuente
Probablemente no encontrará las respuestas a sus preguntas de esta manera (al menos, no fácilmente), pero debe ejecutar grep --exclude=arch -r inotifyen las fuentes del kernel de Linux.

Respuestas:

21

Inotify es una instalación interna del núcleo. No hay un "archivo inotify". Hay llamadas al sistema dedicados inotify_init, inotify_add_watchyinotify_rm_watch que permiten que los procesos se registren para ser notificados cuando ocurren ciertos eventos del sistema de archivos. Cuando ocurre el evento, el proceso recibe una descripción del evento a través del descriptor de archivo devuelto por inotify_init.

Al sistema operativo no se le "dice" que se ha cambiado un archivo: lo sabe, porque está haciendo el cambio. Es la aplicación la que dice que se ha cambiado un archivo en lugar de tener que buscarlo.

El programa inotifywaitproporciona una manera simple de usar inotify desde la línea de comandos.

Gilles 'SO- deja de ser malvado'
fuente