Como o inotify funciona?

14

Segundo a Wikipedia ,

O inotify é um subsistema de kernel do Linux que percebe alterações no sistema de arquivos. Ele substituiu o dnotify anterior.

Os programas que sincronizam arquivos (como crashplan, dropbox, git) recomendam nos guias do usuário que o usuário aumente max_user_watches( 1 , 2 , 3 ).

Pelo que entendi sobre o inotify, o sistema operacional é "informado" de que um arquivo foi alterado, em vez de exigir que o sistema operacional "vá procurar" por alterações.

Presumo que exista um arquivo "inotify" criado em todos os diretórios. Isso está correto? Existe uma maneira de interagir com o inotify na linha de comando?

Recursos
Por que os eventos inotify são diferentes em uma montagem NFS?
Inotifywait para grande número de arquivos em um diretório

spuder
fonte
Você provavelmente não encontrará as respostas para suas perguntas dessa maneira (pelo menos, não com facilidade), mas deverá rodar grep --exclude=arch -r inotifynas fontes do kernel do Linux.

Respostas:

21

Inotify é um recurso interno do kernel. Não há "arquivo inotify". Há chamadas sistema dedicado inotify_init, inotify_add_watche inotify_rm_watchque permitem processos de registrar-se para ser notificado quando certos eventos do sistema de arquivos acontecer. Quando o evento acontece, o processo recebe uma descrição do evento através do descritor de arquivo retornado por inotify_init.

O sistema operacional não é "informado" de que um arquivo foi alterado: ele sabe, porque está fazendo a alteração. É o aplicativo que informa que um arquivo foi alterado em vez de precisar procurar.

O programa inotifywaitfornece uma maneira simples de usar o inotify na linha de comando.

Gilles 'SO- parar de ser mau'
fonte