假设我们有三个shell脚本,分别称为A1,A2和A3。 A1将拨打A2,A2将拨打A3。
是否有任何命令可以列出它们的树结构?说shelltree
shelltree A1
结果如下:
A1
|---A2
|---A3
答案 0 :(得分:1)
您可以使用显示正在运行的进程的pstree
作为树。
例如:
$ bash -c '(bash -c "sleep 20"); sleep 20' &
[1] 23863
$ pstree $(pgrep -fn bash)
-+= 23863 user bash -c (bash -c "sleep 20"); sleep 20
\--- 23864 user sleep 20
用法:
pstree -p [pid ...]
或更复杂的例子(基于this):
#!/bin/bash
d=$1
f(){ let d--; if [ $d -gt 0 ]; then bash -x $0 $d $$; else [ $d -eq 0 ] && pstree -p $$; fi }; f
输出:
$ bash foo.sh 5
+ pstree -p 76216
-+= 00001 root /sbin/launchd
\-+= 00231 kenorb /sbin/launchd
\-+= 00246 kenorb /Applications/Utilities/Terminal.app/Contents/MacOS/Terminal -psn_0_49164
\-+= 70321 root login -pfl kenorb /bin/bash -c exec -la bash /usr/local/bin/bash
\-+= 70322 kenorb -bash
\-+= 76212 kenorb bash foo.sh 5
\-+- 76213 kenorb bash -x foo.sh 4 76212
\-+- 76214 kenorb bash -x foo.sh 3 76213
\-+- 76215 kenorb bash -x foo.sh 2 76214
\-+- 76216 kenorb bash -x foo.sh 1 76215
\-+- 76217 kenorb pstree -p 76216
\--- 76218 root ps -axwwo user,pid,ppid,pgid,command