Jump to content

уведомлять

(Перенаправлено с Fanotify )

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, включают следующее:

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

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

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

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

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

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

См. также

[ редактировать ]
  1. ^ вики inotify-tools
  2. ^ Jump up to: а б Linux 2.6.13, kernelnewbies.org
  3. ^ Jump up to: а б с справочная страница inotify
  4. ^ Роберт Лав, системное программирование Linux . О'Рейли, с. 236
  5. ^ справочная страница inotifywait, [1]
  6. ^ «fa.linux.kernel post [RFC][PATCH] inotify 0.8» . 29 июля 2004 г. Проверено 19 августа 2013 г.
  7. ^ Майкл Керриск (14 июля 2014 г.). «Уведомление файловой системы, часть 2: более глубокое исследование inotify» . LWN.net .
  8. ^ Эли М. Доу (31 мая 2005 г.). «Отслеживание событий файловой системы Linux с помощью Inotify. Зачем inotify?» . Архивировано из оригинала 16 января 2010 г.
  9. ^ inotify файл README
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 8e060260e00955a2e4011e7a6a0388e6__1723343520
URL1:https://arc.ask3.ru/arc/aa/8e/e6/8e060260e00955a2e4011e7a6a0388e6.html
Заголовок, (Title) документа по адресу, URL1:
inotify - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)