inotify是什么
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 年六月十八日),被正式纳入 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 文件系统的功能强大的、高粒度的机制。利用本文提供的样例代码,您可以开始编写用来实时记录文件系统事件并最小化性能开销的应用程序。
TAG:
热门标签: 布依族(1) 打药(1) 割礼(1) 对子(1) 悬杆(1)
注
部分信息与图片素材来源于互联网,如内容侵权与违规,请与本站联系,将立即处理,举报邮箱:1356571586@qq.com
随机关键词:
资源联系人
-
上一篇
如何将网页转换成PDF格式文件
如果你需要保存网页以供日后离线浏览,或是想要分享或打印网页,那就可以考虑把网页转换成 PDF 文件来简化整个操作。Chrome 和 Safari 浏览器都自带创建 PDF 文件的工具,你可以通过它们来直接转换网页。如果使用的火狐或 IE 浏览器,那就要使用额外的软件。“Adobe Acrobat”程序功能最全面,可以获取网页信息,并将它们转换成 PDF 文件。1、打开你想要转换成 PDF 文件的网
-
上一篇
uni-app是什么
uni-app 是一个使用 Vue.js 开发所有前端应用的框架,开发者编写一套代码,可发布到 iOS、Android、H5、以及各种小程序(微信/支付宝/百度/头条/QQ/钉钉/淘宝)、快应用等多个平台。uni,读 you ni,是统一的意思。很多人以为小程序是微信先推出的,其实,DCloud 才是这个行业的开创者。DCloud 于 2012 年开始研发小程序技术,优化 webview 的功能和