Как мне получить 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
обеспечивает соответствующую инфраструктуру.