Inotify 是 Linux 核心子系统之一允许监控程序打开单独的文件描述符,并监控一个或多个文件,如打开、关闭、移动/重命名、删除、建立或更改特征。
Inotify 可以监督文件系统的操作,如载入、载入和建立。Inotify 反应灵敏,用法简单,比较简单 cron 任务繁忙,轮询效率更高。学习如何将如何将其转移到一起。 inotify 集成到您的应用程序中,并找到一组可用于进一步自动化技术治理的命令行工具。
优势
相比被 inotify 替代较老旧 dnotify 模块,inotify 有许多好处。在旧模块中,程序必须为每个被监控的目录创建 file descriptor,这种做法很容易使行程拥有 file descriptor 接近系统允许的上限,然后形成短板。dnotify 产生的 file decriptor 还会造成系统资源繁忙,使可清除设备难以清除,只会增加应用中的困惑。
因为 dnotify 只能让程序设计师监督目录水平的变化,「精细度」也是“dnotify“缺点之一。因此,程序设计师必须投入额外的精力,独立编写程序代码,以跟踪更小的档案系统。
inotify 相比之下,应用较小 file descriptor,亦容许 select()与 poll()界面,好于 dnotify 使用的通信系统。这就导致了这种情况。 inotify 与既有以 select()或 poll()为载体函式库(如:Glib )融合更方便。
inotify 最初的开发者是 John McCutchan、罗伯特·拉姆和 Amy Griffis。于 Linux 核心 2.6.13 发售时(2005 6月18日),正式列入, Linux 核心。即便如此,它仍然可以通过修复程序和修复程序的方式 2.6.12 或者更早期 Linux 核心融合。
inotify 广泛应用于桌面搜索软件,如:Beagle,对变更的档案进行再次检索,无需每隔几分钟就有效地扫描所有档案系统。与积极轮查档案系统相比,通过操作系统积极告知档案变更的形式 Beagle 等待软件甚至可以在档案更改后一秒内升级检索。
此外,许多自动化工作流程,如更新目录检查、再加载设置文件、跟踪变更、备份、同步甚至提交,都可以从中受益。
历史简介
在 inotify 之前有 dnotify。遗憾的是,dnotify 有局限性,用户需要更好的产品。而且和。 dnotify 对比 inotify 优点如下:
Inotify 使用单独的文件描述符,使用单独的文件描述符 dnotify 必须为每个监控目录打开一个文件描述符。当你同时监控多个目录时,成本会非常高,你也会遇到每个过程文件描述符的限制。Inotify 所使用的文件描述符可通过系统调用获得,且无相关设备或文档。而采用 dnotify,文件描述符固定目录,防止预留设备卸载,是移动媒体的典型问题。针对 inotify,卸载的文件系统中的监控文件或目录会产生一件事,监控会自动清除。Inotify 可以监控文档或目录。Dnotify 只监控目录,所以程序猿要保持不变, stat 构造或等效算法设计反映了监控目录中的文档,然后将其与当前状态进行比较,以掌握当前目录中发生的情况。如上所述,inotify 应用文件描述符允许程序猿使用标准 select 或是 poll 函数监控事物。这允许高效的多路复用 I/O 或者与 Glib 的 mainloop 的集成。比较之下,dnotify 应用信号,使程序猿感到非常困难或不够顺畅。在 2.6.25 核心中 inotify 还添加了 Signal-drive I.O 通告作用。当应用于性能监控、程序调试、自动化等行业时,inotify 是监管 Linux 文件系统具有强大的高粒度机制。使用文本中提供的样例代码,您可以逐步编写应用程序,以实时记录文件系统事件,并最大限度地降低特性成本。
- END -