最終更新: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: 現在のシェルプロセスの確認
ターミナルを開く。
次のコマンドを実行する。
ps
表示される出力から、PID、TTY、TIME、CMDが何を示しているのか確認する。
演習2: 全プロセスの詳細確認
次のコマンドを実行する。
ps -ef
出力された情報を確認し、UID、PID、PPID、STIME、CMDなど各項目の意味を理解する。
演習3: カスタムフォーマットでの情報取得
次のコマンドを実行する。
ps -o pid,ppid,user,%cpu,%mem,comm
カスタムフォーマットによって表示される項目のみが出力されていることを確認する。
演習4: プロセスの親子関係の確認
次のコマンドを実行する。
ps -e --forest
ツリー形式の出力から、プロセス間の親子関係を確認する。