Inotify - Inotify

Inotify (индекс уведомить) является Ядро Linux подсистема, которая действует для расширения файловые системы замечать изменения в файловой системе и сообщать об этих изменениях приложениям. Он заменяет более ранний объект, уведомлять, у которых были похожие цели.

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

Inotify можно использовать для автоматического обновления представлений каталогов, перезагрузки файлов конфигурации, регистрации изменений, резервного копирования, синхронизации и загрузки. Команды inotifywait и inotifywatch позволяют использовать подсистему inotify из командной строки. [4]

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

Ограничения

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

  • Inotify не поддерживает рекурсивное наблюдение за каталогами, а это означает, что для каждого подкаталога необходимо создавать отдельные часы inotify.[5]
  • Inotify сообщает о некоторых, но не обо всех событиях в sysfs и procfs.
  • Уведомление через inotify требует, чтобы ядро ​​было осведомлено обо всех соответствующих событиях файловой системы, что не всегда возможно для сетевых файловых систем, таких как NFS где изменения, внесенные одним клиентом, не сразу передаются другим клиентам.
  • События переименования не обрабатываются напрямую; то есть inotify выдает два отдельных события, которые необходимо изучить и сопоставить в контексте потенциальных условий гонки.

История

  • Июль 2004: анонс первого выпуска[1]
  • 29 августа 2005 г .: выпущено ядро ​​Linux версии 2.6.13, содержащее объединенный код inotify.[2]
  • Март 2006: Выпущена библиотека GNU C (glibc) версии 2.4 с начальной поддержкой inotify.[3]
  • Сентябрь 2006 г .: выпущена версия 2.5 Glibc с полной поддержкой inotify.[3]

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

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

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

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

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

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

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

внешняя ссылка