如何找出一段时间内哪些程序修改了文件?

ænd*_*rük 6 troubleshooting files process logging

我想更好地了解哪些程序在重新启动期间正在修改特定文件1。我可以设置一些东西来记录这种信息吗?

轮询当前打开文件的进程将不起作用,因为文件可能只打开几毫秒。

可以使用内核跟踪来收集这些信息吗?


1 /var/lib/alsa/asound.state如果您很好奇,但我对通用解决方案感兴趣。

Sca*_*ine 2

这可以通过该工具来实现fuser。它列出了访问特定文件的所有进程的进程 ID。尝试,

fuser -u .
Run Code Online (Sandbox Code Playgroud)

...查看主目录中哪些文件是“打开”的、涉及的进程 ID 以及拥有这些进程的用户名。

就您而言,我不确定这是否有用,因为您正在尝试监视重新启动。我怀疑 rc.local 在重新启动时执行得太晚,无法捕获任何有用的信息,例如:

watch -n 0.5 "fuser -u /var/lib/alsa/asound.state"

嗯 - 我刚刚尝试将其转储到文件中,但输出不是很漂亮。但如果这个问题可以解决,那么也许 cron 可以实现一些目标?

  • `lsof` 是另一个可能有用的工具,如果它被包装在某些东西中的话。 (2认同)