2

我正在考虑与python-watchdog. 有没有办法确定哪个进程 (PID) 导致了检测到的事件?


背景:我正在寻找一种方法来检测由某些编辑器(如vimpycharmkate. 简而言之,这些编辑器在保存更改时不会“修改”原始文件。相反,他们创建了一个新的并将其与旧的交换 - 以略有不同的各种方式。请参阅中的相关问题python-watchdog。我不是重新配置这些编辑器,而是寻找检测这些 [create/delete/move] 事件序列并可靠地重新解释为原始文件的“伪修改”事件的方法。

4

1 回答 1

1

Jupyter 中 LoggedFS-python 的演示

上述演示可在此处获得。

任何基于 的解决方案inotify,例如python-watchdog,都无法提供进程 ID (PID)。它本质上是inotify自身的规范限制。唯一实际捕获 PID 的地方是操作系统的VFS 层。这意味着必须能够访问实际的文件系统实现——或者从头开始实现一个文件系统。

我实现了 LoggedFS-python,一个FUSE 文件系统,正是为了这个目的。它通过任何操作传递到底层的“实际”文件系统,并且可以访问导致操作的 PID 以及其他附加信息。

loggedfs.loggedfs_notify提供相关的基础设施。

于 2019-04-12T08:45:16.713 回答