inotify - inotify

редактировать

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

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

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

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

Содержание
  • 1 Ограничения
  • 2 История
  • 3 Преимущества перед dnotify
  • 4 См. Также
  • 5 Ссылки
  • 6 Внешние ссылки
Ограничения

Наложенные ограничения by inotify включает следующее:

  • Inotify не поддерживает рекурсивное наблюдение за каталогами, что означает, что для каждого подкаталога необходимо создавать отдельные часы inotify.
  • Inotify сообщает о некоторых, но не обо всех событиях в sysfs и procfs.
  • Уведомление через inotify требует, чтобы ядро ​​было осведомлено обо всех соответствующих событиях файловой системы, что не всегда возможно для сетевых файловых систем, таких как NFS, где изменения, сделанные одним клиентом, не немедленно транслировать другим клиентам.
  • События переименования не обрабатываются напрямую; т.е. inotify выдает два отдельных события, которые необходимо изучить и сопоставить в контексте потенциальных условий гонки.
История
  • Июль 2004 г.: объявление о первом выпуске
  • 29 августа 2005 г.: ядро ​​Linux версии 2.6.13, содержащий объединенный код inotify
  • Март 2006 г.: выпущена библиотека GNU C (glibc) версии 2.4, обеспечивающая начальную поддержку inotify
  • Сентябрь 2006 г.: выпущена версия 2.5 Glibc, обеспечивающая полную поддержку inotify
Преимущества перед dnotify

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

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

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

См. Также
  • icon Портал компьютерного программирования
  • icon Портал Linux
Ссылки
Внешние ссылки
Последняя правка сделана 2021-05-24 03:15:41
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте