7

在 Linux 中读取文件系统事件,我们大多数人使用 Inotify,这确实是一个很好的方法。但它有它的局限性。我必须跟踪我必须观察的所有目录,并为每个目录获取一个 inotify 描述符。假设我想监控我的整个系统,它有大约 1000 万个目录。为 inotify API 本身列出和排队它们需要几个小时。它也会吃掉很多内存。而且我当然不能观看超过 /etc/syscntl.conf 或 /proc/sys/fs/inotify/max_user_watches 中 max_user_watches 中指定的目录。

但是我们知道每个文件系统事件都由内核监控,我们使用 inotify API 来注册特定的目录修改。但是我如何在没有 API 的情况下直接从内核读取 fs 事件 ..?[在 Mac OS X 中,我可以从 /dev/fsevents 读取,同样如果我可以从 /proc 或类似的东西读取,那就太好了]。我也准备好编写一个内核模块,但请分享一些关于此的信息。

4

1 回答 1

5

你看过病毒扫描仪的东西吗?即Fanotify,也fsnotify并与dnotifyinotify挂钩。这取决于内核版本;自大约 2.6.36(2011 年初)以来以某种形式出现。

一些内核文件,

Lwn.net 链接,

于 2013-05-05T15:15:43.150 回答