ターミナルシェルのプロセスツリー(サブプロセスを含む)を表示するには?

ターミナルシェルのプロセスツリー(サブプロセスを含む)を表示するには?

コマンドプロンプトでスクリプトが起動すると、シェルはそのスクリプトのサブプロセスを生成します。ps端末レベルのプロセスとそのサブプロセスとの関係を表示するためにツリー出力を使用したいと思います。
どうすればいいですか?

今まで試したこと

文書:script.sh

#!/bin/bash

ps -f -p$1

その後、コマンドラインからスクリプトを呼び出してターミナルシェルのプロセスIDを渡しました。

$ ./script.sh $$

私が望むのはこれです

  • トップレベル(ターミナル)シェルプロセス
  • ./script.sh
  • psコマンド自体のプロセス
USER    PID  [..]
ubuntu 123     -bash
ubuntu 1234    \_ bash ./script.sh
ubuntu 12345      \_ ps auxf 

私が得るものは次のとおりです。

  PID TTY      STAT   TIME COMMAND
14492 pts/24   Ss     0:00 -bash

ベストアンサー1

試行--forest(または-H)フラグ

# ps -ef --forest
root     114032   1170  0 Apr05 ?        00:00:00  \_ sshd: root@pts/4
root     114039 114032  0 Apr05 pts/4    00:00:00  |   \_ -bash
root      56225 114039  0 13:47 pts/4    00:00:16  |       \_ top
root     114034   1170  0 Apr05 ?        00:00:00  \_ sshd: root@notty
root     114036 114034  0 Apr05 ?        00:00:00  |   \_ /usr/libexec/openssh/sftp-server
root     103102   1170  0 Apr06 ?        00:00:03  \_ sshd: root@pts/0
root     103155 103102  0 Apr06 pts/0    00:00:00  |   \_ -bash
root     106798 103155  0 Apr06 pts/0    00:00:00  |       \_ su - postgres
postgres 106799 106798  0 Apr06 pts/0    00:00:00  |           \_ -bash
postgres  60959 106799  0 14:39 pts/0    00:00:00  |               \_ ps -aef --forest
postgres  60960 106799  0 14:39 pts/0    00:00:00  |               \_ more

おすすめ記事