查找正在修改文件的进程

Way*_*rad 26 linux filesystems debian

我们生产服务器上的一个特定文件在明显随机的时间被修改,这似乎与任何日志活动无关。我们无法弄清楚是什么程序在做的,有很多嫌疑。我怎样才能找到罪魁祸首?

它始终是相同的文件,位于相同的路径,但位于不同的服务器和不同的时间。这些框由puppet管理,但在修改文件时,puppet 日志显示没有活动。

什么内核钩子、工具或技术可以帮助我们找到正在修改这个文件的进程?


lsof 不适合这个,因为文件被打开、修改和关闭的速度非常快。任何依赖轮询(例如经常运行 lsof)的解决方案都不好。


  • 操作系统:Debian 测试
  • 内核:Linux,2.6.32 到 3.9,32 位和 64 位。

Sté*_*las 32

您可以使用 auditd 并为要监视的文件添加规则:

auditctl -w /path/to/that/file -p wa
Run Code Online (Sandbox Code Playgroud)

然后注意要写入的条目/var/log/audit/audit.log

  • +1(再次!)。这比使用“lsof”要好得多,后者需要捕捉修改发生的确切时刻(非常不可能)。您可以在 [此 unix.se 帖子的最佳答案](http://unix.stackexchange.com/questions/13776/determine-which-process-is-creating-a-file) 中获得模式详细信息,其中提到了“auditctl”等监控工具的使用,以及如何设置和使用它们。这可能是确保您知道会发生什么的最安全方法(编辑)! (2认同)
  • 安装:`apt install auditd` (2认同)