第 8章プロセス関連

8.1. 実行中のプロセスを表示 【ps】

$ ps [オプション]

実行中のプロセスを確認するには ps というコマンドを使用します。この他にプロセスを表示するコマンドに top があります。これは、各プロセスを CPU の負荷が大きい順やメモリの消費が大きい順などで表示します。

ps コマンドの代表的なオプションを以下に示します。

表 8-1. ps コマンドのオプション

a現在の端末から実行された、全プロセスを表示します。
fプロセスの親子関係をツリー表記で表示します。
l詳細情報(ロングフォーマット)を含めて表示します。
uユーザー情報を優先して表示します。
w画面に収まらない行を折り返して表示します。
x制御端末から実行されていないプロセスも表示します。

注意

他の一般的なコマンドと異なり、オプションの前にハイフンは付けません。

オプションを指定せずに実行すると、ps コマンドを実行した端末で実行中の自分のプロセスだけが表示されます。

$ ps
  PID TTY          TIME CMD
 1374 pts/2    00:00:00 bash
 1588 pts/2    00:00:00 ps

PID(プロセス ID)とは、プロセスに付与される固有な番号です。プロセスは、この PID という番号で管理されています。

他のユーザーのプロセスも表示するには a オプションを指定します。また、ユーザー名も同時に表示したい場合には u オプションも指定します。

$ ps au
USER       PID %CPU %MEM   VSZ  RSS TTY      STAT START   TIME COMMAND
root      1128  0.0  1.2  3420 1612 pts/2    S    14:23   0:00 bash
turbo     1374  0.0  1.2  3376 1564 pts/2    S    16:16   0:00 -bash
turbo     1589  0.0  0.6  2536  768 pts/2    R    18:22   0:00 ps au

通常、ps コマンドは端末から実行されたプロセスだけを表示しますが、それ以外のプロセス(デーモンや他の端末で実行されたプロセスなど)も含め、実行されている全てのプロセスを表示したい場合は x オプションを指定します。

$ ps aux
USER       PID %CPU %MEM   VSZ  RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.0  1308   80 ?        S    11:14   0:03 init [3] 
root         2  0.0  0.0     0    0 ?        SW   11:14   0:01 [keventd]
root         3  0.0  0.0     0    0 ?        SW   11:14   0:00 [kapm-idled]
root         4  0.0  0.0     0    0 ?        SWN  11:14   0:00 [ksoftirqd_CPU0]
root         5  0.0  0.0     0    0 ?        SW   11:14   0:01 [kswapd]
root         6  0.0  0.0     0    0 ?        SW   11:14   0:00 [bdflush]
root         7  0.0  0.0     0    0 ?        SW   11:14   0:00 [kupdated]
root         8  0.0  0.0     0    0 ?        SW   11:14   0:00 [i2oevtd]
root         9  0.0  0.0     0    0 ?        SW<  11:14   0:00 [mdrecoveryd]
root        50  0.0  0.0     0    0 ?        SW   11:14   0:00 [khubd]
root       284  0.0  0.0  1296    4 ?        S    11:14   0:00 /usr/sbin/apmd -p
root       310  0.0  0.1  1368  224 ?        S    11:14   0:00 syslogd -m 0
root       320  0.0  0.0  2108    4 ?        S    11:14   0:00 klogd
daemon     335  0.0  0.0  1352   96 ?        S    11:14   0:00 /usr/sbin/atd
root       360  0.0  0.0  1448    4 ?        S    11:14   0:00 /sbin/cardmgr
root       375  0.0  0.0  2188    4 ?        S    11:14   0:00 xinetd -stayalive
root       501  0.0  0.0  2584    4 ?        S    11:14   0:00 sshd
root       527  0.0  0.0  4904   52 ?        S    11:14   0:00 httpd
nobody     538  0.0  0.0  5008    4 ?        S    11:14   0:00 httpd

省略

特定のプロセスだけを表示したい場合には、次のようにパイプを使用して grep コマンドへ渡すと便利です。

$ ps auxw | grep rxvt
turbo      3949  0.2  1.3  3304 1664 ?        S    13:19   0:00 rxvt
turbo      3963  0.0  0.5  2488  752 pts/1    S    13:20   0:00 grep rxvt

u オプションを付けた場合は、左から USER(ユーザー名)、PID(プロセスID)、%CPU(CPU利用率)、%MEM(メモリ利用率)、VSZ(仮想イメージのサイズ)、RSS(使用中の物理メモリサイズ)、TTY(端末)、STAT(状態)、START(開始時刻)、TIME(CPU消費時間)、COMMAND(コマンド)の順に表示されます。

STAT(プロセスの状態) の記号の意味は以下の通りです。

表 8-2. ps コマンドのSTAT

D割り込み不可能なスリープ状態
R実行可能
Sスリープ中
T停止またはトレース中
Zゾンビプロセス
Wスワップアウトされたプロセス