如何知道哪个进程正在改变linux中的文件

时间:2017-07-09 17:52:41

标签: linux bash inotify pyinotify

我使用自动化工具构建虚拟机。在此自动化期间,配置文件(/etc/myprogram/cofig.ini)变空。

这个文件的内容是完整的自动化所必需的,但是我很清楚哪个进程正在清空文件。

我想监视一个文件并列出更改文件内容的进程名称。

我使用的是Ubuntu 16.04。

我在Stackoverflow中看到了一些问题,但确实有所帮助。我试图使用audictl inotify和看门狗。请让我知道更好的方法来做到这一点。有没有办法用python做到这一点。

2 个答案:

答案 0 :(得分:3)

lsof命令将显示哪些进程正在使用哪些文件:

lsof | grep <filename>

答案 1 :(得分:2)

您可以使用lsof。此命令用于查找当前打开文件的进程。 如果进程打开文件,写入文件然后关闭它,则可以使用审核。

/sbin/auditctl -w /etc/myprogram/cofig.ini -p war -k config.ini-file

-w watch etc/myprogram/cofig.ini
-p warx watch for write, attribute change, execute or read events
-k config.ini-file is a search key.

等到文件更改然后使用

/sbin/ausearch -f /etc/myprogram/cofig.ini | more