dnotify: Мониторинг событий файловой системы в Linux
Dnotify
dnotify: устаревшая, но поддерживаемая функция ядра Linux для отслеживания изменений файловой системы. Альтернатива inotify, уведомляет приложения об изменениях.
Сравнивайте с английским: нажмите на абзац — оригинал откроется в окне. Кнопка EN под абзацем показывает его прямо в тексте.
Введение
dnotify — это монитор событий файловой системы для ядра Linux, являющийся одной из подфункций системного вызова fcntl. Он был представлен в серии ядер 2.4. Хотя dnotify устарел и заменен inotify, он сохраняется для обеспечения обратной совместимости. Его основная функция — расширение функциональности файловых систем для отслеживания изменений и уведомления об этих изменениях приложений. Вместо того чтобы приложения самостоятельно проверяли наличие изменений в файловой системе, они могут зарегистрироваться для получения уведомлений от ядра при возникновении изменений. Приложение может выбирать каталоги для мониторинга и типы изменений, о которых необходимо сообщать. Одной из основных областей применения является настольный поиск, например, в утилите Beagle, где dnotify позволяет повторно индексировать измененные файлы без необходимости сканировать файловую систему на предмет изменений каждые несколько минут, что было бы крайне неэффективно. Получая уведомления об изменениях файлов непосредственно от ядра, а не осуществляя активный поиск, Beagle и подобные утилиты могут достичь времени переиндексирования около секунды, с минимальным влиянием на производительность (dnotify, таким образом, позволяет использовать такие программы рационально; дистрибутивы обычно не принимают демоны, если они существенно снижают производительность системы для обеспечения функциональности пользовательского уровня).
dnotify is a file system event monitor for the Linux kernel, one of the subfeatures of the fcntl call. It was introduced in the 2.4 kernel series. It has been obsoleted by inotify, but will be retained for compatibility reasons. Its function is essentially an extension to filesystems to notice changes to the filesystem, and report those changes to applications. Instead of application checking for changes to filesystem, application can register to be notified by kernel when changes to filesystem occur. Application can select directories to monitor and types of changes to be notified for. One major use is in desktop search utilities like Beagle, where its functionality permits reindexing of changed files without scanning the filesystem for changes every few minutes, which would be very inefficient. By being told that a file has changed directly by the kernel, rather than actively looking, Beagle and such utilities can achieve change to reindexing times of only about a second, with very small performance hits (dnotify therefore enables the use of such programs in a sensible manner; daemons are generally not accepted by distributors if they drain system performance noticeably to provide userland functionality).
Ограничения
dnotify может отслеживать только каталоги. dnotify требует поддержания открытого файлового дескриптора для каталога, за которым пользователь хочет наблюдать. Во-первых, каталог открыт, что препятствует отмонтированию устройства, на котором он расположен. Во-вторых, размер списка отслеживаемых каталогов ограничен лимитом на количество открытых файлов процесса.
dnotify can only watch directories. dnotify requires maintaining an open file descriptor to the directory that the user wants to watch. First, the directory is open, hence disallowing the device on which it resides from being unmounted. Second, watchlist is limited by open file limit of the process.