如何列出主腳本呼叫的所有腳本?

如何列出主腳本呼叫的所有腳本?

我想列出主腳本正在呼叫的所有腳本(遞歸地)。例如:

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、進程狀態等。

相關內容