pstreeコマンド

実行中のプロセスをツリー形式で表示します。

概要

pstreeコマンドは、システム上で実行中のプロセスをツリー状の図で表示し、プロセス間の親子関係を示します。この視覚化によって、プロセスの階層構造や、どのプロセスが他のプロセスを生成したかを簡単に理解できます。

オプション

-a

コマンドライン引数を表示します。

$ pstree -a
systemd
  ├─NetworkManager --no-daemon
  ├─accounts-daemon
  ├─avahi-daemon
  │   └─avahi-daemon
  └─sshd
      └─sshd
          └─sshd
              └─bash

-p

PID(プロセスID)を表示します。

$ pstree -p
systemd(1)
  ├─NetworkManager(623)
  ├─accounts-daemon(645)
  ├─avahi-daemon(647)
  │   └─avahi-daemon(648)
  └─sshd(1025)
      └─sshd(2156)
          └─sshd(2158)
              └─bash(2159)

-n

プロセスを名前ではなくPIDでソートします。

$ pstree -n
systemd
  ├─systemd-journald
  ├─systemd-udevd
  ├─systemd-resolved
  ├─NetworkManager
  ├─accounts-daemon
  └─sshd

-u

uid(ユーザーID)の変更を表示します。

$ pstree -u
systemd
  ├─NetworkManager
  ├─accounts-daemon(root)
  ├─avahi-daemon(avahi)
  │   └─avahi-daemon(avahi)
  └─sshd
      └─sshd(john)
          └─bash(john)

-h

現在のプロセスとその祖先を強調表示します。

$ pstree -h
systemd
  ├─NetworkManager
  ├─accounts-daemon
  └─sshd
      └─sshd
          └─sshd
              └─bash───pstree

-g

PGID(プロセスグループID)を表示します。

$ pstree -g
systemd(1)
  ├─NetworkManager(623,623)
  ├─accounts-daemon(645,645)
  └─sshd(1025,1025)
      └─sshd(2156,2156)
          └─bash(2159,2159)

使用例

特定ユーザーのプロセスを表示する

$ pstree username
sshd───bash───vim

オプションを組み合わせて詳細な出力を得る

$ pstree -apu
systemd(1)
  ├─NetworkManager(623) --no-daemon
  ├─accounts-daemon(645)
  ├─avahi-daemon(647)(avahi)
  │   └─avahi-daemon(648)(avahi)
  └─sshd(1025)
      └─sshd(2156)(john)
          └─bash(2159)(john)

特定のプロセスとその子プロセスを見つける

$ pstree -p | grep firefox
        │           ├─firefox(2345)───{firefox}(2346)
        │           │                 ├─{firefox}(2347)
        │           │                 ├─{firefox}(2348)
        │           │                 └─{firefox}(2349)

ヒント:

コンパクト表示

デフォルトでは、同一のツリーブランチはスペースを節約するために圧縮されます。-cオプションを使用すると、この動作を無効にして、すべてのプロセスを個別に表示できます。

ASCII文字

ツリー構造がターミナルで正しく表示されない場合は、-Aオプションを使用して、デフォルトのUTF-8文字の代わりにASCII文字を使用します。

プロセスの系統をたどる

デバッグ時には、pstree -pを使用してプロセスの親子関係をすばやく特定できます。これはアプリケーションの構造を理解するのに役立ちます。

grepと組み合わせる

出力をgrepにパイプして特定のプロセスを見つけます: pstree -p | grep firefox

よくある質問

Q1. pstreeはpsとどう違いますか?

A. psはプロセスをフラットなリストで表示しますが、pstreeはプロセスを親子関係を示す階層的なツリー構造で表示します。

Q2. pstreeでプロセスIDを見ることはできますか?

A. はい、-pオプションを使用すると、プロセス名と一緒にプロセスIDを表示できます。

Q3. コマンドライン引数を表示するにはどうすればよいですか?

A. -aオプションを使用すると、各プロセスのコマンドライン引数を表示できます。

Q4. 特定のユーザーのプロセスだけを表示できますか?

A. はい、ユーザー名を引数として指定します: pstree username

Q5. テキストのみのターミナルで出力を読みやすくするにはどうすればよいですか?

A. -Aオプションを使用して、ツリー構造にUTF-8の代わりにASCII文字を使用します。

参考資料

https://man7.org/linux/man-pages/man1/pstree.1.html

改訂履歴