LinuxLinux [リナックス / ライナックス]オープンソースのOSカーネルサーバーの運用や開発において、現在実行されているプログラム(プロセス)の状態を確認することは非常に重要です。その際に最もよく使われるのが psコマンド (Process Status)です。
しかし、実行するとたくさんの項目や見慣れないアルファベットが表示され、「どこを見ればいいのかわからない」と悩む方も多いのではないでしょうか。
本記事では、psコマンドの代表的なオプションである ps aux と ps -ef を例に、出力結果の各項目の見方・読み方を初心者向けにわかりやすく解説します。
1. psコマンドの代表的な使い方
ps コマンド単体で実行すると、現在の端末(ターミナル)で自分が実行しているプロセスのみが表示されます。
システム全体のプロセスを確認する場合は、以下の2つのオプションの組み合わせが定番です。
ps aux(BSD系オプション): より詳細なリソース使用量(CPUCPU [シーピーユー]Central Processing Unit。コンピュータの頭脳となる中央演算処理装置やメモリ)を見たい場合によく使われます。ps -ef(System V系オプション): プロセスの親子関係(PPID)を明確に見たい場合によく使われます。
2. 「ps aux」コマンドの見方
ps aux コマンドを実行した際の出力例と、各項目の意味を解説します。
$ ps auxUSER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMANDroot 1 0.0 0.1 168052 11988 ? Ss Aug09 0:02 /sbin/inituser1 1234 1.5 2.0 512400 81920 pts/0 S+ 10:00 0:05 python script.py| 項目名 | 意味 | 詳細 |
|---|---|---|
| USER | 実行ユーザー | そのプロセスを実行しているユーザー名。 |
| PID | プロセスID | プロセスを一意に識別するための番号。(プロセスを強制終了する kill コマンドなどで使用します) |
| %CPU | CPU使用率 | そのプロセスが使用しているCPUの割合(%)。 |
| %MEM | メモリ使用率 | そのプロセスが使用している物理メモリの割合(%)。 |
| VSZ | 仮想メモリサイズ | プロセスが確保している仮想メモリのサイズ(通常はKB単位)。 |
| RSS | 物理メモリサイズ | プロセスが実際に使用している物理メモリのサイズ(通常はKB単位)。 |
| TTY | 端末名 | プロセスが実行されている端末(ターミナル)。? の場合はデーモンなど端末に紐付かないバックグラウンドプロセスです。 |
| STAT | プロセスの状態 | プロセスの現在の状態を表す記号。(※後述の「STAT(プロセス状態)の見方」で詳しく解説します) |
| START | 開始時刻 | プロセスが起動した時刻または日付。 |
| TIME | 累積CPU時間 | プロセスが起動してから実際にCPUを使用した累積時間。 |
| COMMAND | コマンド名 | 実行されているコマンドとその引数。 |
3. 「ps -ef」コマンドの見方
次に、ps -ef コマンドを実行した際の出力例と、特有の項目を解説します。
$ ps -efUID PID PPID C STIME TTY TIME CMDroot 1 0 0 Aug09 ? 00:00:02 /sbin/inituser1 1234 1230 1 10:00 pts/0 00:00:05 python script.py※上記は説明用の抜粋です。実際にはPID 1230(この例におけるuser1の親プロセス)の行も出力内に存在します。
ps aux と共通する項目(PID、TTY、TIME)を除いた主要項目は以下の通りです。
| 項目名 | 意味 | 詳細 |
|---|---|---|
| UID | ユーザーID | プロセスを実行しているユーザーの名前(またはID)。 |
| PPID | 親プロセスID | Parent PID。このプロセスを起動した「親」のプロセスID。プロセスツリーを追う際に重要です。 |
| C | CPU使用率 | CPU時間 ÷ プロセス経過時間から算出されたプロセッサ利用率の近似値(整数のパーセンテージ)。 |
| STIME | 開始時刻 | プロセスが起動した時刻。 |
| CMD | コマンド名 | 実行されているコマンドとその引数。 |
4. STAT(プロセス状態)の見方
ps aux などで表示される STAT 列には、プロセスの状態を示すアルファベットが表示されます。主に以下の基本状態と、それに付随する追加フラグの組み合わせで構成されています。
基本状態(1文字目)
| 記号 | 状態名 | 意味 |
|---|---|---|
| R | Running / Runnable | 実行中、または実行可能(実行待ち)状態。 |
| S | Interruptible Sleep | 割り込み可能なスリープ状態。入力待ちなどで待機中。大半のプロセスはこの状態です。 |
| D | Uninterruptible Sleep | 割り込み不可能なスリープ状態。主にディスクI/Oなどを待っている状態で、強制終了(kill -9)できないことが多いです。 |
| Z | Zombie | ゾンビプロセス。実行は終了しているが、親プロセスが終了ステータスを受け取っていない状態。 |
| T | Stopped | ジョブコントロール信号(Ctrl+Zなど)によって一時停止されている状態。 |
| I | Idle | カーネルスレッドの待機状態。 |
| W | Paging | ページングされている状態。(※古いカーネルのみで、最近の環境ではほぼ見かけません) |
追加フラグ(2文字目以降)
基本状態の後に、さらに詳細を示す記号が付くことがあります。
| 記号 | 意味 |
|---|---|
| < | 優先度が高い(nice値がマイナス)プロセス。 |
| N | 優先度が低い(nice値がプラス)プロセス。 |
| s | セッションリーダー(他のプロセスの親玉となっているプロセス)。 |
| l | マルチスレッドで動作しているプロセス。 |
| + | フォアグラウンドのプロセスグループに属しているプロセス(現在画面上で動いているものなど)。 |
例:Ss
割り込み可能なスリープ状態(S) であり、かつセッションリーダー(s) であることを示します。
例:R+
実行中または実行待ち状態(R) であり、フォアグラウンドプロセス(+) であることを示します。
まとめ
ps コマンドの結果は一見複雑に見えますが、見るべきポイントを絞ればシステムの状況を正確に把握することができます。
- リソース(CPU/メモリ)を見たい時:
ps aux - 親子のプロセス関係(PPID)を見たい時:
ps -ef
まずはこの2つのコマンド出力と、PID(プロセスID)、STAT(状態)、COMMAND(実行コマンド) の見方から覚えていくのがおすすめです。システムトラブル時の調査などにぜひ役立ててください。
以上で本記事の解説を終わります。
よいITライフを!
人気記事
- 1
- 2
- 3
- 4
- 5
Rocky Linux対応。実際にWebサーバーを公開するまでのプロセスを体験できる、最も確実で実践的なガイドブックです。