3

我想知道脚本启动了哪些可执行文件以及以什么顺序启动(并递归地跟踪这些可执行文件)。

例如,假设我在这里有一个 bash 脚本(称为 abc.sh):

#!/bin/bash
ls
gcc

我想用“trace/log command”运行这个脚本并得到这样的东西:

abc.sh -- ls
      |-- gcc -- cpp
              -- cc1
              ... etc.

这表明 abc.sh 调用了 ls 和 gcc。gcc 反过来又称为 cpp 和 cc1。

这可能吗?我该怎么做?像上面这样的树视图会很好,但更简单的视图也可以。

请注意,我不想要进程树的当前快照。相反,我想要生成过程的跟踪或日志。时间注释也很有用。

谢谢!

4

2 回答 2

4

您可以尝试分析strace命令的输出。特别是,你会对类似的东西感兴趣

strace -f -tt -e trace=execve ./abc.sh
于 2010-10-14T23:09:09.177 回答
0

您可以使用 pstree 命令。它旨在准确显示您正在寻找的内容:进程树(因此名称为 pstree)。它不会为您提供进程跟踪,但您可以多次调用它以获得类似于您正在寻找的东西。

于 2010-10-14T23:04:39.603 回答