我想知道脚本启动的可执行文件以什么顺序(并且递归地跟踪这些可执行文件)。如何在linux中获取进程树的跟踪/日志?
例如,假设我这里有一个bash脚本(称为abc.sh):
#!/bin/bash
ls
gcc
我想用运行此脚本“跟踪/ log命令”,并得到这样的事情:
abc.sh -- ls
|-- gcc -- cpp
-- cc1
... etc.
这表明abc.sh调用了ls和gcc。 gcc又称为cpp和cc1。
这可能吗?我该怎么做?类似上述的树形视图会很好,但更简单的视图也可以。
注意,我不想进程树的当前快照。相反,我需要一个产卵过程的踪迹或日志。时间标注也是有用的。
谢谢!
你可能想要加一些输出重定向和一个grep,这样你就可以得到输出的exec部分。特别是如果您正在跟踪的脚本已输出:strace -f -e trace = execve ./t.sh 2>&1 | grep exec – 2010-10-15 00:01:09
这个,我认为这会起作用。 我希望一些更高级的脚本/工具,它将执行以下操作:1. 如果有比execve的可产卵孩子其他命令,赶上那些为好。 2.以漂亮的树形式呈现它。 3.不打印不成功的execve命令(通常它会遍历整个PATH以查看exe是否存在)。 – 2010-10-15 00:20:34
@Paul:我宁愿使用-o选项将strace输出重定向到一个文件。因为什么都不能阻止程序打印包含“exec”的东西给stderr,对吧? – 2010-10-15 05:46:07