inotify ( inode notify) is a Linux kernel subsystem created by John McCutchan, which monitors changes to the filesystem , and reports those changes to applications. It can be used to automatically update directory views, reload configuration files, log changes, backup, synchronize, and upload. The inotifywait and inotifywatch commands (maintained by Eric Curtin as part of the inotify-tools project) allow using the inotify subsystem from the command line. One major use is in desktop search utilities like Beagle , where its functionality permits reindexing of changed files without scanning the filesystem for changes every few minutes, which would be very inefficient.
6-697: Inotify replaced an earlier facility, dnotify , which had similar goals. Inotify was merged into the Linux kernel mainline in kernel version 2.6.13, released on August 29, 2005; later kernel versions included further improvements. The required library interfaces were added into the GNU C Library (glibc) in its version 2.4, released in March 2006, while the support for inotify was completed in glibc version 2.5, released in September 2006. Limitations imposed by inotify include
12-461: A necessary evil in that a cache of stat structures has to be maintained, for every new stat structure generated a comparison is run against the cached one. The inotify API uses fewer file descriptors, allowing programmers to use the established select and poll interface, rather than the signal notification system used by dnotify . This also makes integration with existing select- or poll-based libraries (like GLib ) easier. Dnotify dnotify
18-402: A problem when using removable media. Devices could not be unmounted since file descriptors kept the resource busy. Another drawback of dnotify is the level of granularity, since programmers can only monitor changes at the directory level. To access detailed information about the environmental changes that occur when a notification message is sent, a stat structure must be used; this is considered
24-612: Is a file system event monitor for the Linux kernel , one of the subfeatures of the fcntl call. It was introduced in the 2.4 kernel series. It has been obsoleted by inotify , but will be retained for compatibility reasons. Its function is essentially an extension to filesystems to notice changes to the filesystem, and report those changes to applications. Instead of application checking for changes to filesystem, application can register to be notified by kernel when changes to filesystem occur. Application can select directories to monitor and types of changes to be notified for. One major use
30-448: Is in desktop search utilities like Beagle , where its functionality permits reindexing of changed files without scanning the filesystem for changes every few minutes, which would be very inefficient. By being told that a file has changed directly by the kernel, rather than actively looking, Beagle and such utilities can achieve change-to-reindexing times of only about a second, with very small performance hits (dnotify therefore enables
36-439: The following: There are a number of advantages when using inotify when compared to the older dnotify API that it replaced. With dnotify, a program had to use one file descriptor for each directory that it was monitoring. This can become a bottleneck since the limit of file descriptors per process could be reached. Later, fanotify was created to overcome this issue. The use of file descriptors along with dnotify also proved to be
#475524