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, где их функциональность позволяет переиндексировать измененные файлы без сканирования файловой системы на предмет изменений каждый раз. несколько минут, что было бы очень неэффективно.
Наложенные ограничения by inotify включает следующее:
При использовании inotify есть ряд преимуществ по сравнению со старым API dnotify, который он заменил. С dnotify программа должна была использовать один дескриптор файла для каждого каталога, который она отслеживала. Это может стать узким местом, поскольку может быть достигнут предел дескрипторов файлов на процесс. Позже для решения этой проблемы был создан fanotify. Использование файловых дескрипторов вместе с dnotify также оказалось проблемой при использовании съемных носителей. Не удалось размонтировать устройства, поскольку дескрипторы файлов держали ресурс занятым.
Еще один недостаток dnotify - уровень детализации, поскольку программисты могут отслеживать изменения только на уровне каталогов. Для доступа к подробной информации об изменениях среды, которые происходят при отправке сообщения уведомления, необходимо использовать структуру stat; это считается неизбежным злом, так как необходимо поддерживать кеш структур статов, для каждой новой сгенерированной структуры статов выполняется сравнение с кэшированной.
inotify API использует меньше файловых дескрипторов, что позволяет программистам использовать установленный интерфейс выбора и опроса, а не систему уведомления о сигналах, используемую dnotify. Это также упрощает интеграцию с существующими библиотеками на основе выбора или опроса (например, GLib ).