在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或类似的东西读取,那将是很棒的]。我也准备编写一个内核模块,但请分享一下。
答案 0 :(得分:5)
您是否看过病毒扫描程序的内容?即,Fanotify,还 fsnotify 并挂钩 dnotify 和 inotify 。这取决于kernel version;自大约2。6。36(2011年初)以某种形式出现。
一些内核文件,
Lwn.net链接,