我正在考虑与python-watchdog
合作。有没有办法确定哪个进程(PID)导致检测到的事件?
背景:我正在寻找一种方法来检测某些编辑器(如vim
,pycharm
或kate
)导致的修改事件。简而言之,那些编辑不会修改"保存更改时的原始文件。相反,他们创造了一个新的并与旧的交换 - 以不同的方式略有不同。见related issue in python-watchdog
。我没有重新配置那些编辑器,而是在寻找检测[create / delete / move]事件序列和可靠重新解释为"伪修改"的方法。原始文件的事件。
答案 0 :(得分:1)
here上提供了上述演示。
任何基于inotify
的解决方案,例如python-watchdog
,都将无法提供进程ID(PID)。它本质上是inotify
本身的规范限制。实际捕获PID的唯一位置是操作系统的VFS-layer。这意味着必须访问实际的文件系统实现-或从头开始实现文件系统。
正是出于这个目的,我实现了LoggedFS-python,一个FUSE file system。它可以通过任何操作传递到底层的“实际”文件系统,并且可以访问引起该操作的PID,以及其他附加信息。
loggedfs.loggedfs_notify
提供了相关的基础结构。