Как работает inotify?

14

Согласно Википедии ,

inotify - это подсистема ядра Linux, которая замечает изменения в файловой системе. Он заменил предыдущий dnotify.

Программы, которые синхронизируют файлы (такие как crashplan, dropbox, git), рекомендуют в руководствах пользователя увеличивать количество пользователей max_user_watches( 1 , 2 , 3 ).

Из того, что я понимаю об inotify, ОС «говорят», что файл был изменен, вместо того, чтобы требовать, чтобы ОС «искала» изменения.

Я предполагаю, что в каждом каталоге создается файл «inotify». Это верно? Есть ли способ взаимодействия с inotify из командной строки?

Ресурсы
Почему события inotify отличаются при монтировании NFS?
Inotifywait для большого количества файлов в каталоге

spuder
источник
Вы, вероятно, не найдете ответы на свои вопросы таким образом (по крайней мере, не легко), но вы должны работать grep --exclude=arch -r inotifyв исходных кодах ядра Linux.

Ответы:

21

Inotify является внутренним средством ядра. Не существует «файла уведомлений». Есть специализированные системные вызовы inotify_init, inotify_add_watchи inotify_rm_watchкоторые позволяют процессам зарегистрировать себя , чтобы получать уведомления , когда определенные события происходят с файловой системой. Когда событие происходит, процесс получает описание события через дескриптор файла, возвращаемый inotify_init.

ОС не «говорят», что файл был изменен: она знает, потому что она делает изменения. Это приложение, которое говорит, что файл был изменен, а не искать.

Программа inotifywaitпредоставляет простой способ использовать inotify из командной строки.

Жиль "ТАК - перестань быть злым"
источник