Articulo de referencia

notificar

inotify ( inode notify) es un subsistema del kernel de Linux creado por John McCutchan, que supervisa los cambios en el sistema de archivos y los notifica a las aplicaciones. Se...

inotify ( inode notify) es un subsistema del kernel de Linux creado por John McCutchan, que supervisa los cambios en el sistema de archivos y los notifica a las aplicaciones. Se puede utilizar para actualizar automáticamente las vistas de directorios, recargar archivos de configuración, registrar cambios, realizar copias de seguridad, sincronizar y cargar archivos. Los comandos inotifywait e inotifywatch (mantenidos por Eric Curtin como parte del proyecto inotify-tools) permiten utilizar el subsistema inotify desde la línea de comandos. [ 1 ] Un uso importante se encuentra en utilidades de búsqueda de escritorio como Beagle, donde su funcionalidad permite reindexar los archivos modificados sin escanear el sistema de archivos en busca de cambios cada pocos minutos, lo que sería muy ineficiente.

inotify reemplazó una herramienta anterior, dnotify , que tenía objetivos similares. Inotify se integró en la rama principal del kernel de Linux en la versión 2.6.13, publicada el 29 de agosto de 2005; [ 2 ] versiones posteriores del kernel incluyeron mejoras adicionales. Las interfaces de biblioteca necesarias se agregaron a la biblioteca GNU C (glibc) en su versión 2.4, publicada en marzo de 2006, mientras que la compatibilidad con inotify se completó en la versión 2.5 de glibc, publicada en septiembre de 2006. [ 3 ]

Limitaciones

Las limitaciones impuestas por inotify incluyen las siguientes:

  • Inotify no admite la monitorización recursiva de directorios, lo que significa que se debe crear una monitorización de inotify independiente para cada subdirectorio. [ 4 ] En cambio, el comando inotifywait sí proporciona monitorización recursiva de directorios. [ 5 ]
  • Inotify informa de algunos eventos, pero no de todos, en sysfs y procfs .
  • La notificación a través de inotify requiere que el kernel esté al tanto de todos los eventos relevantes del sistema de archivos, lo cual no siempre es posible para sistemas de archivos en red como NFS, donde los cambios realizados por un cliente no se transmiten inmediatamente a otros clientes.
  • Los eventos de cambio de nombre no se manejan directamente; es decir, inotify emite dos eventos separados que deben examinarse y compararse en un contexto de posibles condiciones de carrera.

Historia

  • Julio de 2004: primer anuncio de lanzamiento [ 6 ]
  • 29 de agosto de 2005: Se publica la versión 2.6.13 del kernel de Linux, que contiene el código inotify fusionado [ 2 ].
  • Marzo de 2006: Se lanza la versión 2.4 de la biblioteca GNU C (glibc), que incorpora soporte inicial para inotify [ 3 ].
  • Septiembre de 2006: Se lanza la versión 2.5 de Glibc, que trae soporte completo para inotify [ 3 ].

Ventajas sobre dnotify

Existen varias ventajas al usar inotify en comparación con la antigua API dnotify a la que reemplazó. [ 7 ] [ 8 ] [ 9 ] Con dnotify, un programa tenía que usar un descriptor de archivo para cada directorio que estaba monitoreando. Esto podía convertirse en un cuello de botella, ya que se podía alcanzar el límite de descriptores de archivo por proceso. Posteriormente, se creó fanotify para solucionar este problema. El uso de descriptores de archivo junto con dnotify también resultó ser un problema al usar medios extraíbles. Los dispositivos no se podían desmontar porque los descriptores de archivo mantenían el recurso ocupado.

Otro inconveniente de dnotify es el nivel de granularidad, ya que los programadores solo pueden supervisar los cambios a nivel de directorio. Para acceder a información detallada sobre los cambios de entorno que se producen al enviar un mensaje de notificación, es necesario utilizar una estructura stat; esto se considera un mal necesario, puesto que se debe mantener una caché de estructuras stat, y para cada nueva estructura stat generada, se realiza una comparación con la almacenada en caché.

La API inotify utiliza menos descriptores de archivo, lo que permite a los programadores usar la interfaz select y poll ya establecida, en lugar del sistema de notificación de señales que usa dnotify . Esto también facilita la integración con bibliotecas existentes basadas en select o poll (como GLib ).

Véase también

Referencias

  1. wiki de inotify-tools
  2. 1 2 Linux 2.6.13, kernelnewbies.org
  3. 1 2 3 página de manual de inotify
  4. Robert Love, Programación de sistemas Linux . O'Reilly, pág. 236
  5. Manual de usuario de Linux – Comandos de usuario de Manned.orginotifywait(1)  
  6. "fa.linux.kernel post [ RFC ] [ PATCH ] inotify 0.8" . 2004-07-29 . Consultado el 2013-08-19 .
  7. Michael Kerrisk (14 de julio de 2014). "Notificación del sistema de archivos, parte 2: Una investigación más profunda de inotify" . LWN.net .
  8. Eli M. Dow (31 de mayo de 2005). "Monitorización de eventos del sistema de archivos Linux con inotify; ¿Por qué inotify?" . Archivado del original el 16 de enero de 2010.
  9. Archivo README de inotify
  • Kernel Korner : una introducción a inotify por Robert Love (2005) 
  • Artículo de LWN sobre inotify : monitorización de eventos del sistema de archivos con inotify (parcialmente desactualizado) 
  • Artículo de IBM : monitorización de eventos del sistema de archivos Linux con inotify (6 de septiembre de 2008). 
  • Notificación del sistema de archivos, parte 1: Una descripción general de dnotify e inotify un artículo de LWN.net de Michael Kerrisk (2014)