我想列出主腳本正在呼叫的所有腳本(遞歸地)。例如:
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、進程狀態等。