Apparence
Uubu.fr

Les systèmes Linux, l’open source, les réseaux, l’interopérabilité, etc.
« Il vaut mieux viser la perfection et la manquer que viser l’imperfection et l’atteindre. » (Bertrand Arthur William RUSSEL)
31 mars 2016

inotify linux features           Systèmes de fichier


inotify

inotify

Surveillance des événements des systèmes de fichier

   inotify est contrôlé par un jeu de 3 appels système et d’un fichier I/O normal retourné sur un descripteur de fichier.

inotify_init(2) Créé une instance inotify et renvoie un descripteur de fichier se référant à cette instance inotify. inotify_init1(2) est similaire mais offre un argument flags qui fournis des fonctionnalités supplémentaires.
inotify_add_watch(2) Manipule la liste de surveillance associée à une instance inotify. Chaque élément indique le chemin d'un fichier ou d'un répertoire avec un ensemble d'événements à surveiller.
inotify_rm_watch(2) Retire un élément d'une liste de surveillance inotify

Pour déterminer quels événements ont lieu, une application lit le descripteur de fichier inotify avec read(2). Chaque lecture réussie renvoie un tampon contenant une ou plusieurs structures suivantes:
struct inotify_event {
    int wd; /*Descripteur de surveillance*/
    uint32_t mask; /*Masque d'événements*/
    uint32_t cookie; /*Cookie unique d'association des événements (pour rename(2))*/
    uint32_t len; /*Taille du champ name*/
    char name[]; /*Nom optionnel terminé par un nul*/
};

wd identifie l'élément de surveillance
mask contient des bits décrivant l'événement
cookie entier unique qui relie les événements. Utilisé uniquement pour les événements de renommage
len Compte tous les octets de name, incluant les caractères nuls.

Événements inotify

IN_ACCESS accès au fichier
IN_ATTRIB Modification des métadonnées, ex les permissions, horodatages, attributs étendus, compteur de liens, UID ou GID.
IN_CLOSE_WRITE Fichier ouvert en écriture fermé
IN_CLOSE_NOWRITE Fichier non ouvert en écriture fermé
IN_CREATE Fichier ou répertoire créé dans le répertoire surveillé
IN_DELETE Fichier ou répertoire supprimé dans le répertoire surveillé
IN_DELETE_SELF Fichier ou répertoire surveillé supprimé ( ou déplacé dans un autre système de fichier)
IN_MODIFY Fichier modifié
IN_MOVE_SELF Fichier ou répertoire surveillé déplacé
IN_MOVED_FROM Généré pour le répertoire contenant l'ancien nom quand un fichier est renommé
IN_MOVED_TO Généré pour le répertoire contenant le nouveau nom quand un fichier est renommé
IN_OPEN Fichier ouvert
IN_MOVE Équivalent à IN_MOVED_FROM | IN_MOVED_TO
IN_CLOSE Équivalent à IN_CLOSE_WRITE | IN_CLOSE_NOWRITE
IN_DONT_FOLLOW e pas déréférencer pathname s'il s'agit d'un lien symbolique
IN_EXCL_UNLINK Ne génère pas d'événements pour certaines entrées après leur suppression du répertoire surveillé
IN_MASK_ADD Ajouter des événements au masque de surveillance de ce fichier s'il existe déjà (au lieu de remplacer le masque)
IN_ONESHOT Surveiller pathname jusqu'au premier événement, puis le supprimer de la liste de surveillance
IN_ONLYDIR Ne surveiller pathname que si c'est un répertoire
IN_IGNORED Le surveillant a été retiré explicitement au automatiquement
IN_ISDIR Le sujet de cet événement est un répertoire
IN_Q_OVERFLOW File des événements surchargé
IN_UNMOUNT Le système de fichiers contenant l'objet surveillé a été démonté