我希望可视化由运行类似git lg -n3之类的操作而引起的文件系统操作。我在苹果电脑上。所以我想,好吧,让我们运行dtruss git lg -n3。
不幸的是,这并没有给我预期的输出。我希望在.git/objects看到对某些文件的文件访问。
dtruss不是我要找的吗?
我应该补充一点,当我通过git log运行它时,我也看不到它的输出。如果运行dtruss git,至少会看到git命令概述的输出。我做错了吗?
更新
好的,这是一个如何处理多字命令git log的问题。如果我使用dtruss /usr/local/git/libexec/git-core/git-log,它就会像预期的那样工作。
我可以走得更远,运行dtruss /usr/local/git/libexec/git-core/git-log -n3 2>&1 | grep access,得到我想要的东西。因此,剩下的唯一问题就是为什么我必须使用通往git-log的完整路径,而不是只使用git log命令。
发布于 2014-08-26 22:42:03
在Linux (嵌入式或桌面)这样的UNIXoid系统上,我喜欢使用inotify-工具来实现这个目的,例如inotifywait或inotifywatch,这取决于我的确切目的。
编辑:,我想知道为什么有人否决了我的答案。Inotify tools是一组专门用于监视文件系统访问的工具,这就是所要求的。如果我的答复似乎不够好或不够相关,我希望你先说一句,要求澄清。谢谢。
发布于 2014-08-27 06:49:31
你可能想试试strace。例如,这可能是您要寻找的结果:
strace -q -f -e trace='open,stat' git log -n3或者如果你真的想要所有的文件系统访问
strace -q -f -e trace=file git log -n3应该这么做。如果您不需要跟踪-f和其他可能执行的分叉进程所做的事情,请删除less部件。和往常一样,man strace值得一读.
https://stackoverflow.com/questions/25415196
复制相似问题