Comment fonctionne inotify?

14

Selon Wikipedia ,

inotify est un sous-système du noyau Linux qui remarque des changements dans le système de fichiers. Il a remplacé le précédent dnotify.

Les programmes qui synchronisent des fichiers (tels que crashplan, dropbox, git) recommandent dans les guides d'utilisation que l'utilisateur augmente max_user_watches( 1 , 2 , 3 ).

D'après ce que je comprends sur inotify, le système d'exploitation est "informé" qu'un fichier a été modifié, au lieu d'exiger que le système d'exploitation "recherche" les modifications.

Je suppose qu'il existe un fichier "inotify" créé dans chaque répertoire. Est-ce correct? Existe-t-il un moyen d'interagir avec inotify à partir de la ligne de commande?

Ressources
Pourquoi les événements inotify sont-ils différents sur un montage NFS?
Inotifywait pour un grand nombre de fichiers dans un répertoire

spuder
la source
Vous ne trouverez probablement pas les réponses à vos questions de cette façon (au moins, pas facilement) mais vous devriez exécuter grep --exclude=arch -r inotifydans les sources du noyau Linux.

Réponses:

21

Inotify est une fonctionnalité de noyau interne. Il n'y a pas de «fichier inotify». Il y a des appels système dédiés inotify_init, inotify_add_watchet inotify_rm_watchqui permettent aux processus de s'inscrire pour être informé lorsque certains événements du système de fichiers se produisent. Lorsque l'événement se produit, le processus reçoit une description de l'événement via le descripteur de fichier renvoyé par inotify_init.

L'OS n'est pas «informé» qu'un fichier a été modifié: il le sait, car il fait le changement. C'est l'application qui se fait dire qu'un fichier a été modifié au lieu de devoir aller le chercher.

Le programme inotifywaitfournit un moyen simple d'utiliser inotify à partir de la ligne de commande.

Gilles 'SO- arrête d'être méchant'
la source