我正在使用 inotify 来监控各种 分区(可能位于不同的硬盘上)上的各种 目录。为了确保收集到某个时间点 T 之前发生的所有事件,我正在访问主目录中的一个特殊文件并等待 inotify 报告这个修改。收到此通知后,我是否可以确定我也收到了 T 之前的所有修改的所有事件(对于所有目录和所有分区)?
最佳答案
我不确定这是否适用于同一 inotify 实例上不同文件系统上的 watch ,但可以权威地说该技术在一般情况下确实有效:我们在 Watchman 中使用它(我们在这里描述它:https://facebook.github.io/watchman/docs/cookies.html)
我们假设这不会跨文件系统边界正确排序并为每个监视的根创建一个实例;这使我们更容易正确地跟踪和关联事件。我们还必须处理 fsevents、kqueue 和其他监视实现,因此我们尽量避免与底层实现耦合得太紧密。
根据您的具体用例,您可以在每个文件系统中使用一个实例,并在您的时间 T 访问每个文件系统的根目录中的一个特殊文件。前提是您已经观察到您的两个特殊文件变化,你知道你已经看到了时间 T 之前的一切,也许还多一点。如果“也许多一点”部分不是破坏交易的因素,那么您就成功了。
关于linux - inotify:事件报告的顺序是否与它们在文件系统中发生的顺序严格相同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23778818/