Inotificar

La versión actual de la página aún no ha sido revisada por colaboradores experimentados y puede diferir significativamente de la versión revisada el 28 de febrero de 2015; las comprobaciones requieren 6 ediciones .

Inotify  es un subsistema del kernel de Linux que le permite recibir notificaciones de eventos relacionados con archivos y directorios del sistema de archivos. Por ejemplo, abrir archivos y directorios para leer o escribir, cambiar atributos , mover, eliminar, etc. Se ha incluido en el kernel principal desde 2.6.13, pero se puede usar con kernels anteriores usando una superposición de parches. Desde la versión 2.6.32, Inotify se reemplazó por Fsnotify e Inotify se basa en Fsnotify, pero para aplicaciones prácticas, este detalle no tiene importancia [1] .

Al suscribirse a los eventos de Inotify, los scripts no tienen que escanear periódicamente el sistema de archivos en busca de cambios. Además, la suscripción al evento no impide que se desmonte el volumen [1] .

El alcance principal está en los motores de búsqueda locales (por ejemplo , Beagle ), por lo que el programa indexador no necesita escanear periódicamente todo el sistema de archivos. Además, puede monitorear archivos de configuración importantes y restaurarlos en caso de daño, realizar acciones automáticas después de cargar archivos al servidor, etc. [1]

Utilidades

Aunque el mecanismo de Inotify es parte del sistema operativo, accesible a través de un conjunto de llamadas al sistema y, por lo tanto, no requiere la instalación de bibliotecas adicionales, el paquete de herramientas de inotify se ha creado para la línea de comandos, lo que le permite usar Inotify en scripts. [1] [2] .

Las dos principales herramientas de inotify son inotifywatch e inotifywait, por ejemplo, el siguiente comando recopila estadísticas de uso para el directorio /tmp [1] :

inotifywatch -r /tmp

Para monitorear archivos o directorios en tiempo real, puede usar inotifywait [1] :

$ inotifywait -mr /tmp Configuración de relojes. Cuidado: dado que se dio -r, ¡esto puede llevar un tiempo! Relojes establecidos. /tmp/ CREAR archivo-tmp-ejemplo /tmp/ ABRIR archivo-tmp-ejemplo /tmp/ CLOSE_WRITE,CLOSE ejemplo-tmp-archivo

Ejemplos de otras utilidades que usan Inotify son [1] :

Llamadas al sistema

Para trabajar con funciones, debe incluir el archivo de encabezado sys/inotify.h .

int inotify_init()

Crea un descriptor de archivo del que se leen todos los eventos que ocurren.

int inotify_add_watch(int fd, const char * ruta, máscara __u32);

Crea un descriptor de observación único (dentro de un descriptor de archivo) que se usa para identificar rutas y eventos que ocurren. En este caso, solo se permiten aquellos eventos que se especifican en la máscara.

int inotify_rm_watch(int fd, __u32 wd);

Elimina un identificador de observación existente.

Recepción de eventos

Los eventos se reciben mediante la llamada al sistema de lectura tradicional, que lee en una estructura inotify_event con los siguientes campos:

identificador Sentido
wd descriptor de observación
mascarilla máscara de evento
Galleta marca de tiempo entre IN_MOVED_FROM y IN_MOVED_TO
Len longitud del nombre de archivo
nombre nombre de archivo relativo al directorio para el que se creó el descriptor de observación

La máscara de evento es un OR lógico de las siguientes constantes:

Al generar eventos, también se pueden utilizar las siguientes constantes:

Notas

  1. 1 2 3 4 5 6 7 Vervloesem, 2011 .
  2. Inotify-tools Archivado el 1 de junio de 2014 en Wayback Machine . Es una biblioteca C y un conjunto de programas de línea de comandos para Linux que proporciona una interfaz simple para inotificar.

Literatura

Enlaces