Home
1452 words
7 minutes
【Unix】psコマンドの解説
2025-02-22

最終更新:2025-02-22

psコマンドは、Unix系システムにおいて現在実行中のプロセス情報を一覧表示するためのツールである。

システム管理やトラブルシューティングにおいて、プロセスの状態、所有者、開始時刻、CPU使用率などの情報を取得するために利用される。以下では、主なオプション、各オプションごとの出力例、出力の見方、およびハンズオンの例を具体的に解説する。

使用方法#

単に ps と入力すると、現在のシェルに関連するプロセスのみが表示される。

ps

出力例:#

  PID TTY          TIME CMD
 2728 pts/0    00:00:00 bash
 2936 pts/0    00:00:00 ps
  • PID: プロセスIDであり、各プロセスに割り当てられる一意の番号である。
  • TTY: プロセスが使用している端末を示す。端末が割り当てられていないプロセスは「?」と表示される。
  • TIME: プロセスが使用した累積CPU時間である。
  • CMD: 実行中のコマンド名またはプロセスを起動したプログラムを示す。

主なオプション#

以下に、psコマンドで利用可能な主要なオプションとその具体的な出力例を示す。

1. -e または -A(全プロセス表示)#

すべてのプロセスを表示する。どちらも同様の動作であり、システム上のすべてのプロセスが一覧表示される。

ps -e

出力例:#

  PID TTY          TIME CMD
     1 ?        00:00:04 init
   245 ?        00:00:00 systemd
  2728 pts/0    00:00:00 bash
  2936 pts/0    00:00:00 ps
  • 「?」は、端末が割り当てられていないプロセスを示す。

2. -a(制御端末を持つ全プロセス表示)#

制御端末(TTY)を持つプロセスを対象とする。自身のログインセッションのプロセスが出力される。

ps -a

出力例:#

  PID TTY          TIME CMD
 2728 pts/0    00:00:00 bash
 2936 pts/0    00:00:00 ps

3. -x(端末に関連付けられないプロセスも含む)#

制御端末に関連付けられていないプロセスも表示するためのオプションである。-aと組み合わせると、ほぼすべてのプロセスを表示できる。

ps -ax

出力例:#

  PID TTY      STAT   TIME COMMAND
   245 ?        Ss     00:00:00 systemd
  2728 pts/0   S      00:00:00 bash
  2936 ?       S      00:00:00 ps -ax
  • STAT: プロセスの状態(例:R=実行中, S=スリープ中, Z=ゾンビなど)を示す。

4. -f(フルフォーマット表示)#

詳細なプロセス情報を表示する。ユーザー名、親プロセスID(PPID)、プロセス開始時刻(STIME)、実行中のコマンドラインなども確認できる。

ps -ef

出力例:#

UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 Feb20 ?        00:00:04 /sbin/init
root       245     1  0 Feb20 ?        00:00:00 /lib/systemd/systemd-journald
ss0832   2728  2700  0 07:38 pts/0    00:00:00 bash
ss0832   2936  2728  0 07:38 pts/0    00:00:00 ps -ef
  • UID: プロセスの所有者のユーザー名。
  • PPID: 親プロセスのIDであり、プロセス間の階層関係を示す。
  • C: CPU使用率の概算値。
  • STIME: プロセスが開始された時刻。

5. -l(ロングフォーマット表示)#

さらに詳細な情報を表示する。プロセスの優先度(PRI)、ナイス値(NI)、仮想メモリサイズ(SZ)、実際の物理メモリ使用量(RSS)などが含まれる。

ps -l

出力例:#

F   UID   PID  PPID  C PRI NI    SZ    RSS WCHAN  STAT TTY          TIME COMMAND
4  1000  2728  2700  0  80  0   1234   456 ep_poll S    pts/0    00:00:00 bash
0  1000  2936  2728  0  80  0    567   123 -      R    pts/0    00:00:00 ps -l
  • F: プロセスフラグを示す。
  • PRI: 優先度、システムがプロセスに割り当てる実行優先度。
  • NI: ナイス値、ユーザーが設定する優先度の補正値。
  • SZ: 仮想メモリサイズ(キロバイト単位)。
  • RSS: 使用中の物理メモリ量(キロバイト単位)。
  • WCHAN: プロセスが待機しているカーネル関数。
  • STAT: プロセスの状態(詳細)。

6. -o format(カスタムフォーマット指定)#

特定の情報のみを抽出して表示する。カンマ区切りでフィールドを指定する。

ps -o pid,ppid,user,%cpu,%mem,comm

出力例:#

  PID  PPID USER     %CPU %MEM COMMAND
 2728  2700 ss0832   0.0  0.1 bash
 2936  2728 ss0832   0.0  0.1 ps
  • この出力は、PID, PPID, ユーザー, CPU使用率, メモリ使用率, コマンドのみを表示している。

7. -p pid(特定プロセスの絞込み)#

特定のプロセスIDに絞って表示する。

ps -p 2728

出力例:#

  PID TTY          TIME CMD
 2728 pts/0    00:00:00 bash
  • 指定したPIDのみの情報が表示される。

8. --forest(ツリー構造表示)#

プロセスの親子関係を視覚的に示すため、木構造形式で情報を表示する。親プロセスと子プロセスの関係が一目でわかる。

ps -e --forest

出力例:#

  PID TTY          TIME CMD
    1 ?        00:00:04 /sbin/init
        ├─245 ?        00:00:00 /lib/systemd/systemd-journald
        └─2700 pts/0    00:00:00 bash
            └─2728 pts/0    00:00:00 bash
                └─2936 pts/0    00:00:00 ps -e --forest
  • ツリー形式により、各プロセスの親子関係が明確に表示される。

出力の見方#

  • PID, PPID
    プロセス識別番号およびその親プロセスの番号が、プロセス間の関係性を把握する手助けとなる。

  • TTY
    プロセスが接続されている端末を示す。通常、インタラクティブなシェルでは具体的な端末名(例:pts/0)が表示され、デーモンなどでは ? と表示される。

  • TIME
    CPU時間の累積で、プロセスがどの程度CPUリソースを使用したかを示す。

  • CMD / COMMAND
    実際に実行されているコマンドラインで、プロセスの内容を判別するために重要である。

  • その他のフィールド(UID, C, PRI, NI, SZ, RSS, WCHAN, STAT)
    これらはプロセス管理やパフォーマンス監視を行う上で、より詳細な情報を提供する。

ハンズオン#

以下に、psコマンドを実際に操作する手順を示す。

演習1: 現在のシェルプロセスの確認#

  1. ターミナルを開く。

  2. 次のコマンドを実行する。

    ps
    
  3. 表示される出力から、PID、TTY、TIME、CMDが何を示しているのか確認する。

演習2: 全プロセスの詳細確認#

  1. 次のコマンドを実行する。

    ps -ef
    
  2. 出力された情報を確認し、UID、PID、PPID、STIME、CMDなど各項目の意味を理解する。

演習3: カスタムフォーマットでの情報取得#

  1. 次のコマンドを実行する。

    ps -o pid,ppid,user,%cpu,%mem,comm
    
  2. カスタムフォーマットによって表示される項目のみが出力されていることを確認する。

演習4: プロセスの親子関係の確認#

  1. 次のコマンドを実行する。

    ps -e --forest
    
  2. ツリー形式の出力から、プロセス間の親子関係を確認する。

【Unix】psコマンドの解説
https://ss0832.github.io/posts/20250222_ps_command_guide/
Author
ss0832
Published at
2025-02-22