不使用Inotify从Linux内核读取文件系统事件

Reading File System Events from Linux Kernel without Inotify

本文关键字:内核 读取 文件系统 事件 Linux Inotify      更新时间:2023-10-16

在Linux中读取文件系统事件,我们大多数人使用Inotify,这真的是一个很好的一个。但它也有它的局限性。我必须跟踪所有的目录,我必须观察和获得每个目录的通知描述符。假设我想监控我的整个系统,它有大约1000万个目录。为inotify API列出它们并对它们进行排队将花费数小时。它也会消耗大量内存。我当然不能监视目录超过在/etc/syscntl.conf或/proc/sys/fs/inotify/max_user_watches中指定的目录。

但是我们知道每个文件系统事件都是由内核监控的,我们使用inotify API来注册某个目录修改。但我如何读取fs事件直接从内核没有API ..?[在Mac OS X中,我可以从/dev/fsevents中读取,同样,如果我可以从/proc或类似的东西中读取,那将是伟大的]。我也准备写一个内核模块,但请分享一些光在这个

你看了病毒扫描程序的东西了吗?例如,notify,还有fsnotify,并连接到dnotifyinotify。这取决于内核版本;从大约2.6.36(2011年初)开始以某种形式存在。

部分内核文件

  • proc文件
  • fsnotify.h
  • fsnotify_backend.h
  • fanotify.h

Lwn.net链接,

    API概述gh>
  • 主提交通知
  • 各种提交