如何监控写入特定文件的程序?

如何监控写入特定文件的程序?

我很好奇如何通过命令行显示/监控程序正在写入的文件?我知道某些进程依赖某些文件才能运行,但我如何知道这些进程使用哪些文件。假设我想查看 DNS 解析器服务写入哪些文件,我知道答案是 /etc/resolv.conf,但我如何验证这一点?

答案1

lsof命令列出了每个进程打开的文件。任何时刻打开的文件数量都很大,因此您需要具体一点。

  • 如果你知道进程 ID,请执行sudo lsof -p <pid>

  • 如果您知道文件所在的目录,请执行sudo lsof +D <directory>

还有更多选项。请参阅man lsof。如果没有 sudo,您只能看到由您自己拥有的进程打开的文件。

答案2

您可以使用strace它来监视进程进行的每个系统调用,包括打开文件进行读写。

strace处理大量输出。您可以 grep 输出以open仅查看对 的调用open files

man strace有关详细信息,请参阅。请注意-f,如果您需要跟踪分叉的进程,这是一个选项。

相关内容