我想知道脚本启动的可执行文件和顺序(并递归跟踪这些可执行文件)。
例如,假设我在这里有一个bash脚本(称为abc.sh):
#!/bin/bash
ls
gcc
我想用“trace / log命令”运行这个脚本并得到这样的东西:
abc.sh -- ls
|-- gcc -- cpp
-- cc1
... etc.
这表明abc.sh称为ls和gcc。反过来,gcc称为cpp和cc1。
这可能吗?我该怎么做?像上面这样的树视图会很好,但更简单的视图也可以。
请注意,我不想要进程树的当前快照。相反,我想要产生过程的跟踪或日志。时间注释也很有用。
谢谢!
答案 0 :(得分:1)
您可以尝试分析strace
命令的输出。
特别是,你会对像
strace -f -tt -e trace=execve ./abc.sh
答案 1 :(得分:0)
您可以使用pstree命令。它的构思是准确显示您正在寻找的内容:进程树(因此名称,pstree)。它不会给你进程跟踪,但你可以多次调用它来获得类似于你正在寻找的东西。