找出正在写入特定目录的进程

hom*_*439 22 linux

我有一个目录 /some/dir,我看到新文件一直出现在那里。我如何找出哪个进程正在创建这些文件?

Jan*_*nen 21

使用内核audit子系统

auditctl -w /some/dir/ -p war -k whatsgoingon

这会设置一个钩子,等待 /some/dir/ 下发生的事情。

然后确保你有auditd守护进程运行。之后,只需等到文件出现并查看/var/log/auditd.log它在系统中的任何位置写入和读取发生的事情以及通过什么过程。

  • 这确实是一个有效的方法!多谢!!!顺便说一句,完成后,您可以删除所有挂钩,以避免通过“auditctl -D”永远写入审核日志。您可以使用“auditctl -l”列出所有挂钩。 (3认同)

wee*_*avy 20

试试lsof +r2 | grep '/some/dir'。这将显示访问/some/dir 的进程并每 2 秒刷新一次。

  • Thaks,这与我需要的非常接近,因为它首先生成打开文件的整个列表,然后按 /some/dir 过滤。但是,如果进程非常快速地创建文件并且不让它们保持打开状态,我知道上面的内容可能会丢失一些。我认为在那种情况下唯一的选择是审计子系统,对吗? (3认同)