Linux / コマンド / ps - 現在のプロセス状態を確認
psは実行時のプロセス一覧を表示します。プロセスを識別する番号(PID)やユーザー、状態、コマンドを確認して特定のサービスや作業が実際に実行中か調査する際に使用します。
psはある時点のスナップショットを出力して終了します。継続的な変化を調べる場合は、topによる定期更新表示 やhtopを使います。オプション表記にはPOSIX形式とBSD形式が混在しており、ハイフンの有無によって意味が変わることがあります。
基本的な文法
ps [オプション]
インストールされている実装とオプションは、配布版によって異なる場合があります。man psで現在のシステムの説明を確認してください。
使用例
現在のターミナルのプロセス
procps-ng版では通常、実効ユーザーIDが自分と同じで、呼び出した端末にも結び付いたプロセスを選びます。単に全ユーザーの同じ端末のプロセスを表示する指定ではありません。
ps
システム全体のプロセス
ユーザー、PID、親PID、コマンドを広く確認します。
ps -ef
特定のPIDのフィールド指定
1234 を実際に確認したいPIDへ置き換えます。-o で必要な列を指定すると、親プロセスID(PPID)、実効ユーザー名、状態、コマンド引数を比較しやすくなります。
ps -p 1234 -o pid,ppid,user,stat,cmd
プロセス列を読む方法
以下は対話型のBashで試す例です。列を指定すれば、PID(プロセスID)、PPID(親PID)、状態、コマンド名を明確に区別できます。
ps -o pid,ppid,stat,comm -p $$
例の出力(番号は実行するたびに変わります):
PID PPID STAT COMMAND
4321 4100 Ss bash
対話型Bashの $$ はそのシェルのPIDです。ただしBashのサブシェル内でも $$ は元の値を保つため、常に現在の子プロセスIDを示すとは限りません。例のSTATにある S は割り込み可能な待機状態、s はセッションリーダーを示します。番号や状態は環境で変わり、表示直後に終了する場合もあります。シグナルを送る前には対象を再確認してください。
主なオプションと形式
| オプション・形式 | 説明 |
|---|---|
-e |
全プロセスを選択します。 |
-f |
詳細形式で出力します。 |
-p PID |
指定したプロセスIDのみを選択します。 |
-o 列リスト |
出力するフィールドと順序を指定します。 |
aux |
BSDスタイルで全ユーザープロセスとリソース情報を見ます。 |
使用する際の注意点
ps | grep 名前は検索用で、grep自体が結果に混ざることがあります。名前を条件にPIDを探す場合は pgrepのプロセス検索 も使えます。プロセスは短時間で生成・終了し、PIDが再利用される場合もあるため、シグナルを送る前に対象を再確認します。procps-ngの %CPU は通常、プロセスの生存期間全体で使ったCPU時間の割合で、直近の更新間隔の使用率とは異なります。コンテナや権限制限で見える範囲も変わります。コマンド引数には機密情報が含まれる場合があるので、出力を共有する際は確認してください。
よくある質問
psとtopは何が違うのですか?
psは実行時点のリストを出力して終了します。topは画面を定期的に更新して変化を観察します。
公式ドキュメント
オプションの正確な動作と実装ごとの違いは、ps 関連の公式ドキュメントで確認できます。




