如何查看应用程序命令期间访问哪些文件?

时间:2014-05-03 08:53:30

标签: linux linux-device-driver

如果我在Linux中运行某个命令行应用程序,如何判断该进程访问(读取和/或写入)哪些文件?我想我需要在文件系统驱动程序中放置一些钩子并重新编译内核,或类似的东西?有更简单的方法吗?

3 个答案:

答案 0 :(得分:5)

strace是一个命令,将显示应用程序所做的每个系统调用。

从手册页:

  

在最简单的情况下, strace 运行指定的命令,直到它退出。它拦截并记录由进程调用的系统调用和进程接收的信号。每个系统调用的名称,其参数和返回值都打印在标准错误或使用-o选项指定的文件上。

例如,每个open(),read()和write()操作都将显示参数和返回码。

答案 1 :(得分:3)

您可以通过linux中的 lsof 命令获取应用程序的文件访问列表Here是示例列表

答案 2 :(得分:2)

除了提及lsof的其他答案外,strace(也许ltrace也可能有用!),fs_usage您可以在进程1234中使用目录{{1}特别是打开的文件描述符可从/proc/1234/获得;从您的程序内部,您可以使用/proc/1234/fd/。见proc(5)

也许inotify(7)ptrace(2)也是相关的。