【发布时间】:2026-02-14 04:20:03
【问题描述】:
我可以通过系统调用而不是处理文件中的文本来获取存储在/proc 中的信息吗?
我正在尝试list inotify watches which are preventing the unmount of a filesystem。
我已经编写了一部分 shell 脚本,但它已经太慢了。我正在考虑用 Perl 重写。
有没有办法从系统调用中获取/proc 信息以进一步加快速度?
【问题讨论】:
-
我相信
/proc伪文件系统的全部意义在于将许多不同的系统调用或对受保护内核内存的直接访问聚合在一个简单的结构下。 -
Inotify watch 不能阻止文件系统的卸载。该文档甚至提到了专门的 inotify 事件,该事件在文件系统卸载时被调度:“IN_UNMOUNT - 包含监视对象的文件系统已卸载”。而且,如果您阅读有关该主题的一点点内容,您会发现,专门创建了 inotify/fanotify 来解决其前身 dnotify 的问题,该问题不支持卸载监视目录。
-
不正确,他们can indeed。
-
@TomHale 不,他们不能。我的评论中引用的这段话来自Linux manpage of inotify,它明确指出,可以卸载带有 inotify 监视对象的分区。您已链接到 Symantec 文章,该文章提到了 Veritas 文件系统(一种专有的 HP UX 文件系统,不久前移植到 Linux)的一个已知问题。那篇文章承认这个问题是一个错误,并指出缺乏解决方法。 AFAIK,上游 Linux 官方支持的所有文件系统都没有出现此类问题。
-
我在
btrfs上体验过,显示它发生的记录显示在here。
标签: linux perl linux-kernel inotify procfs