stringtranslate.com

уведомлять

inotify ( inode notify) — подсистема ядра Linux , созданная Джоном МакКутчаном, которая отслеживает изменения в файловой системе и сообщает об этих изменениях приложениям. Его можно использовать для автоматического обновления представлений каталогов, перезагрузки файлов конфигурации, регистрации изменений, резервного копирования, синхронизации и загрузки. Команды inotifywait и inotifywatch ( поддерживаемые Эриком Кертином в рамках проекта inotify-tools) позволяют использовать подсистему inotify из командной строки. [1] Одним из основных применений являются утилиты поиска на рабочем столе , такие как Beagle , где их функциональность позволяет переиндексировать измененные файлы без сканирования файловой системы на наличие изменений каждые несколько минут, что было бы очень неэффективно.

inotify заменил более раннюю функцию dnotify , преследовавшую аналогичные цели. Inotify был объединен с основной веткой ядра Linux в версии ядра 2.6.13, выпущенной 29 августа 2005 г.; [2] более поздние версии ядра включали дальнейшие улучшения. Требуемые библиотечные интерфейсы были добавлены в библиотеку GNU C (glibc) в ее версии 2.4, выпущенной в марте 2006 года, а поддержка inotify была завершена в glibc версии 2.5, выпущенной в сентябре 2006 года. [3]

Ограничения

Ограничения, налагаемые inotify, включают следующее:

История

Преимущества перед dnotify

Использование inotify имеет ряд преимуществ по сравнению со старым API dnotify , который он заменил. [7] [8] [9] При использовании dnotify программе приходилось использовать один файловый дескриптор для каждого каталога, который она отслеживала. Это может стать узким местом, поскольку может быть достигнут предел количества файловых дескрипторов на процесс. Позже для решения этой проблемы был создан fanotify. Использование файловых дескрипторов вместе с dnotify также оказалось проблемой при использовании съемных носителей. Устройства не удалось отключить, поскольку файловые дескрипторы заставляли ресурс быть занятым.

Еще одним недостатком dnotify является уровень детализации, поскольку программисты могут отслеживать изменения только на уровне каталога. Чтобы получить доступ к подробной информации об изменениях среды, которые происходят при отправке уведомления, необходимо использовать структуру статистики; это считается неизбежным злом, поскольку необходимо поддерживать кеш статистических структур, поскольку для каждой новой созданной статистической структуры выполняется сравнение с кэшированной.

API-интерфейс inotify использует меньше файловых дескрипторов, что позволяет программистам использовать установленный интерфейс выбора и опроса, а не систему уведомления о сигналах, используемую dnotify . Это также упрощает интеграцию с существующими библиотеками на основе выбора или опроса (например, GLib ).

Смотрите также

Рекомендации

  1. ^ вики inotify-tools
  2. ^ ab Linux 2.6.13, kernelnewbies.org
  3. ^ справочная страница abc inotify
  4. ^ Роберт Лав, системное программирование Linux. О'Рейли, с. 236
  5. ^ справочная страница inotifywait, [1]
  6. ^ "Сообщение fa.linux.kernel [RFC] [PATCH] inotify 0.8" . 29 июля 2004 г. Проверено 19 августа 2013 г.
  7. Майкл Керриск (14 июля 2014 г.). «Уведомление файловой системы, часть 2: более глубокое исследование inotify». LWN.net .
  8. ^ Зачем уведомлять? Архивировано 16 января 2010 г. в Wayback Machine.
  9. ^ inotify файл README

Внешние ссылки