Jak działa Inotify?

14

Według Wikipedii ,

inotify to podsystem jądra Linuksa, który zauważa zmiany w systemie plików. Zastąpił poprzednie dnotify.

Programy, które synchronizują pliki (takie jak crashplan, dropbox, git), zalecają w instrukcjach użytkownika zwiększenie liczby użytkowników max_user_watches( 1 , 2 , 3 ).

Z tego, co rozumiem na temat inotify, system operacyjny jest „informowany”, że plik został zmieniony, zamiast wymagać od systemu operacyjnego „szukania” zmian.

Zakładam, że w każdym katalogu jest utworzony plik „inotify”. Czy to jest poprawne? Czy istnieje sposób interakcji z inotify z wiersza poleceń?

Zasoby
Dlaczego zdarzenia inotify różnią się w przypadku montażu NFS?
Inotifywait dla dużej liczby plików w katalogu

spuder
źródło
Prawdopodobnie nie znajdziesz w ten sposób odpowiedzi na swoje pytania (przynajmniej niełatwo), ale powinieneś działać grep --exclude=arch -r inotifyw źródłach jądra Linux.

Odpowiedzi:

21

Inotify jest wewnętrznym narzędziem jądra. Nie ma „pliku inotify”. Są dedykowane wywołania systemowe inotify_init, inotify_add_watcha inotify_rm_watchktóre umożliwiają procesy zarejestrować się być powiadomiony, gdy pewne zdarzenia systemu plików zdarzyć. Kiedy zdarzenie ma miejsce, proces otrzymuje opis zdarzenia za pośrednictwem deskryptora pliku zwróconego przez inotify_init.

System operacyjny nie jest „informowany”, że plik został zmieniony: wie, bo to zmienia. Jest to aplikacja, która poinformowała, że ​​plik został zmieniony zamiast szukać.

Program inotifywaitzapewnia prosty sposób użycia inotify z wiersza poleceń.

Gilles „SO- przestań być zły”
źródło