Введение

dnotify — это монитор событий файловой системы для ядра Linux, являющийся одной из подфункций системного вызова fcntl. Он был представлен в серии ядер 2.4. Хотя dnotify устарел и заменен inotify, он сохраняется для обеспечения обратной совместимости. Его основная функция — расширение функциональности файловых систем для отслеживания изменений и уведомления об этих изменениях приложений. Вместо того чтобы приложения самостоятельно проверяли наличие изменений в файловой системе, они могут зарегистрироваться для получения уведомлений от ядра при возникновении изменений. Приложение может выбирать каталоги для мониторинга и типы изменений, о которых необходимо сообщать. Одной из основных областей применения является настольный поиск, например, в утилите Beagle, где dnotify позволяет повторно индексировать измененные файлы без необходимости сканировать файловую систему на предмет изменений каждые несколько минут, что было бы крайне неэффективно. Получая уведомления об изменениях файлов непосредственно от ядра, а не осуществляя активный поиск, Beagle и подобные утилиты могут достичь времени переиндексирования около секунды, с минимальным влиянием на производительность (dnotify, таким образом, позволяет использовать такие программы рационально; дистрибутивы обычно не принимают демоны, если они существенно снижают производительность системы для обеспечения функциональности пользовательского уровня).

Ограничения

dnotify может отслеживать только каталоги. dnotify требует поддержания открытого файлового дескриптора для каталога, за которым пользователь хочет наблюдать. Во-первых, каталог открыт, что препятствует отмонтированию устройства, на котором он расположен. Во-вторых, размер списка отслеживаемых каталогов ограничен лимитом на количество открытых файлов процесса.