![如何才能找出哪些程序在一段时间内修改了文件?](https://linux22.com/image/957141/%E5%A6%82%E4%BD%95%E6%89%8D%E8%83%BD%E6%89%BE%E5%87%BA%E5%93%AA%E4%BA%9B%E7%A8%8B%E5%BA%8F%E5%9C%A8%E4%B8%80%E6%AE%B5%E6%97%B6%E9%97%B4%E5%86%85%E4%BF%AE%E6%94%B9%E4%BA%86%E6%96%87%E4%BB%B6%EF%BC%9F.png)
我想更好地了解哪些程序在重启期间修改了特定文件1。我可以设置一些东西来记录此类信息吗?
轮询哪些进程现在打开文件将不起作用,因为文件可能只打开几毫秒。
可以使用内核跟踪来收集这些信息吗?
1 /var/lib/alsa/asound.state
如果你好奇的话,但我对通用解决方案感兴趣。
答案1
这可以通过该工具实现fuser
。它列出了访问特定文件的所有进程的进程 ID。尝试,
fuser -u .
...查看主目录中哪些文件处于“打开”状态、涉及的进程 ID 以及拥有这些进程的用户名。
就你的情况而言,我不确定这是否有用,因为你正在尝试监控重启。我怀疑 rc.local 在重启过程中执行得太晚,无法捕获任何有用的信息,比如
watch -n 0.5 "fuser -u /var/lib/alsa/asound.state"
嗯 - 我刚刚尝试将其转储到文件中,但输出效果不太好。但如果可以解决这个问题,那么也许可以使用 cron 来实现某些功能?