Windows系统一直有比较完善的文件系统变化通知机制,并为用户提供了FindFirstChangeNotification等 API来方便监控文件系统事件。Linux kernel从2.6.13版本起引入了inotify文件系统事件通知机制,以改善用户体验,使得用户空间可以非常方便地对文件系统变化事件进行监控。 Inotify 是一个 Linux 内核特性,它监控文件系统事件,并且及时发出相关的事件通知。它监控的文件系统事件包括:
IN_ACCESS,文件被访问
IN_MODIFY,文件被 write
IN_ATTRIB,文件属性被修改
IN_CLOSE_WRITE,可打开文件被关闭
IN_CLOSE_NOWRITE,不为写打开文件被关闭
IN_OPEN,文件被打开
IN_MOVED_FROM,文件从监控点移出
IN_MOVED_TO,文件被移入监控点
IN_CREATE,创建新文件
IN_DELETE,文件被删除
IN_DELETE_SELF,监控文件自身被删除
IN_MOVE_SELF,监控文件自身被移出
IN_UNMOUNT,被监控文件所在文件系统被卸载
Inotify实际是一种事件驱动机制,它为应用程序监控文件系统事件提供了实时响应事件的机制,而无须通过诸如cron等的轮询机制来获取事件。cron等机制不仅无法做到实时性,而且消耗大量系统资源。相比之下,inotify基于事件驱动,可以做到对事件处理的实时响应,也没有轮询造成的系统资源消耗,是非常自然的事件通知接口,也与自然世界的事件机制相符合。
Inotify从2005年linux kernel 2.6.13引入,经过好几年发展,目前已经处于成熟稳定阶段,可以在实际产品和系统中使用。Inotify相关工具和程序开发接口从参考 http://www.ibm.com/developerworks/cn/linux/l-ubuntu-inotify/index.html 。inotify-tools是一个很好用的工具,可以用它来进行验证和测试,当然也可以用它来开发shell程序。
那么inotyfy机制可以用来做些什么呢?
数据备份、数据容灾、数据复制、CDP、数据同步、文件系统监控等应用都可以利用这一机制,实时对数据变化进行处理。
更多信息请参考linux inotify manual pages.
inotify文件系统事件驱动机制
最新推荐文章于 2024-11-06 01:06:23 发布