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

Man*_*san 7 c++ linux inotify linux-kernel fsevents

在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或类似的东西读取,那将是很棒的].我已经准备好编写一个内核模块,但请分享一下.

art*_*ise 5

你看过病毒扫描程序了吗?即,Fanotify,也fsnotify迷住dnotifyinotify.这取决于内核版本 ; 自大约2.6.36(2011年初)以某种形式出现.

一些内核文件,

Lwn.net链接,