pstree プロセスの親子関係を木の形で表示する
pstree [オプション] [PIDまたはユーザー名]試してみる
pstree | head全プロセスの親子関係を木の形で表示します。いちばん上が最初のプロセス(init)です。
pstree userユーザー user のプロセスだけを表示します。
pstree -p userPIDも一緒に表示します。
pstree -a userコマンドの引数も表示します。
pstree -s -p "$(pgrep -o -x sleep)"指定したプロセスから、親をさかのぼって表示します。
pstree -n | head -5同じ階層のプロセスを、名前順ではなくPID順に並べます。
主なオプション
-p | PIDを表示する |
|---|---|
-a | コマンドラインの引数も表示する |
-u | ユーザーが変わるところで、ユーザー名を表示する |
-s | 指定したプロセスの親をさかのぼって表示する |
-n | 名前ではなく PID の順に並べる |
-h | 現在のプロセスとその親を強調して表示する |
解説
親子関係が一目で分かる
プロセスは、別のプロセスから起動されます。起動したほうが親、されたほうが子です。ps -ef では PPID の列からたどりますが、pstree なら木の形で見られます。たとえば、ログインシェルがさらに別のコマンドを起動している様子が、枝分かれとして見えます。
同じ名前のプロセスはまとまる
同じ名前の子が並ぶとき、pstree は 3*[sleep] のように、まとめて表示します。個別に見たいときは -p を付けると、PID が出て別々に表示されます。
最初のプロセス
木の根は、カーネルが最初に起動するプロセス(PID 1)です。一般的な Debian や CentOS では systemd です。以前は init でした。このページのターミナルでは、簡易の init-min が最初のプロセスです。
ps –forest との違い
ps -ef --forest も木の形で表示できますが、pstree はより簡潔に、全体の構造をつかむのに向いています。ほかのプロセスを終了させる前に、子プロセスを持っていないか確かめるときにも使えます。