我想列出主脚本调用的所有脚本(递归)。例如:
master.sh
a.sh >> this script calls a1.sh, a2.sh, a3.sh etc
b.sh >> this one calls b1.sh, b2.sh, something.sh, etc.sh..
c.sh > similarly.
这就像脚本的树命令。
输出可能类似于
master.sh
-a.sh
|- a1.sh
|-something.sh
|-something_else.sh
-a2.sh
|-x.sh
|-y.sh
-a3.sh
...
答案1
最好的方法是pstree
。它将以漂亮的树形格式列出所有正在运行的进程。您可以使用该-H
选项突出显示特定命令(以PID)。在下面的例子中,我使用pgrep
来获取的 PID master.sh
:
pstree -H `pgrep master.sh` |grep -A 2 master.sh
|-bash---master.sh-+-a1.sh---something.sh
| |-a2.sh
| |-a3.sh
该ps
命令还可以执行您需要的操作,该ps
命令可以执行一切除了煮一杯好咖啡:
ps xjf
这将列出由master.sh
(实际上,它将列出全部进程(包括由 启动的进程master.sh
)以树状格式显示:
\_ master.sh
| \_ a1.sh
| \_ something.sh
| \_ something.sh
| \_ a2.sh
| \_ a3.sh
我在这里仅显示相关的输出,上述命令还将为您提供其他各种信息,例如 PID、进程状态等等。