我遇到问题,需要将每次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
请注意,这将显示正在打开的文件以及访问该文件的命令。