如何列出主脚本调用的所有脚本?

如何列出主脚本调用的所有脚本?

我想列出主脚本调用的所有脚本(递归)。例如:

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、进程状态等等。

相关内容