如何跟踪并打印 bash 启动时访问/使用的所有文件?

如何跟踪并打印 bash 启动时访问/使用的所有文件?

我遇到问题,需要将每次bash在 macOS 上执行时访问的所有文件打印到控制台。

有没有相对简单的方法来做到这一点?也许dtrace可以让这变得相当简单?

答案1

如果您想查看任何名为“bash”的进程直接打开的所有文件,您可以执行以下操作:

$ sudo dtrace -n 'syscall::open*:entry/execname == "bash"/{ trace(copyinstr(arg0)); }'

或者,您可能希望查看 bash 启动和出现提示符之间打开的所有文件。为此,你可以这样做:

$ sudo dtrace -n 'syscall::open*:entry/progenyof($target)/{ printf("%s %s", execname, copyinstr(arg0)) }' -c bash

请注意,这将显示正在打开的文件以及访问该文件的命令。

相关内容