Как мне получить PID процесса, вызывающего событие файловой системы?

Я собираюсь работать с python-watchdog, Есть ли способ определить, какой процесс (PID) вызвал обнаруженное событие?


Справочная информация: я ищу способ обнаружить изменения событий, вызванных определенными редакторами, такими как vim, pycharm или же kate, В двух словах, эти редакторы не "изменяют" исходный файл при сохранении изменений. Вместо этого они создают новый и заменяют его старым - различными способами. Смотрите связанную проблему вpython-watchdog, Вместо того, чтобы переконфигурировать эти редакторы, я ищу способы обнаружения этих последовательностей событий [create / delete / move] и надежной повторной интерпретации как "псевдо-модифицировать" события исходного файла.

0 ответов

Вышеприведенная демоверсия доступна здесь.

Любое решение на основе inotify, такие как python-watchdog, не сможет предоставить идентификатор процесса (PID). По сути, это ограничение спецификации inotify сам. Единственное место, где можно поймать PID - это VFS-уровень операционной системы. Это означает, что нужно иметь доступ к фактической реализации файловой системы или реализовать файловую систему с нуля.

Я реализовал LoggedFS-python, файловую систему FUSE, именно для этой цели. Он проходит через любую операцию в базовой "фактической" файловой системе и имеет доступ к PID, вызывающему операцию, среди другой дополнительной информации.

loggedfs.loggedfs_notify обеспечивает соответствующую инфраструктуру.

Другие вопросы по тегам