Hack 90. Top コマンド

top コマンドは。CPU ロード時間・メモリ使用量・プロセスリストなどのような
システムのパフォーマンス指標についてのリアルタイムの情報を表示します。

Syntax: top [options]

CPU 使用量のような現在のシステム状態はどのようにしたらみることができるのでしょうか?

コマンドラインから何もオプションを指定せずに top コマンドを実行してください。
以下に示すような出力が表示されるでしょう。
top コマンドの出力はリアルタイムの値を表示しつづけます。
「Control + c」か q を入力しない限り、コマンド出力から抜けられません。

# top

top - 13:10:13 up 171 days, 20:21, 3 users, load average: 0.01, 0.05, 0.00
Tasks: 194 total, 1 running, 193 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.6% us, 0.7% sy, 0.0% ni, 98.7% id, 0.0% wa, 0.0% hi, 0.0% si
Mem:  1034624k total, 1007420k used,   27204k free, 174540k buffers
Swap: 2031608k total,       0k used, 2031608k free, 615904k cached

  PID USER   PR NI VIRT  RES  SHR S %CPU %MEM  TIME+  COMMAND
11912 apache 15  0 31828 13m 3916 S    1  0.2 0:46.35 httpd
19299 oracle 19  0 279m  18m  17m S    1  0.2 0:00.03 oracle
11398 jsmith 16  0 107m  28m 6404 S    0  0.4 0:03.07 perl

上記の top コマンドの出力をどのようにみたらよいでしょうか?

o Line 1 “top”は、システムが起動してから 171 日間実行していることを示します。
o Line 2 “Tasks”はプロセスの総数を示し、順に実行中・スリープ中・停止中・ゾンビプロセス数を示します。
o Line 3 “Cpu(s)”はシステムの現在の CPU 使用量を示します。例では、CPU は 98.7% アイドル状態です。
o Line 4 “Mem” と line 5 “Swap” はメモリ情報を示します。free コマンドと同じ情報になります。
o 残りの行はシステムのアクティブなプロセスすべてを示します。デフォルトでは CPU 使用率(%CPU カラム)でソートされています。
つまりデフォルトでは最も頻繁に CPU を使用してるプロセスが上位に表示されます。

top コマンドで利用可能なコマンドラインオプションやインタラクティブオプションがいくつかあります。
top コマンドのよく使用するオプションをいくつかみてみましょう。


もっともメモリを使用しているプロセスを調べるには?

top コマンドの出力が表示されているときに F を入力します。
そうすると次のようなメッセージが表示され、ソート可能なフィールドすべてを表示します。
たとえば n (メモリ使用量でプロセスをソートします) や enter を入力します。
top 出力のプロセスをメモリ使用量でソートして表示します。

Current Sort Field: K for window 1:Def

フィールドの文字を通してソートフィールドを選択します。
それ以外のキーを入力すると元に戻ります。

top 出力にフィールド(たとえば CPU 時間)を追加するには?

top コマンドが実行中に f を入力します。
そうすると次のようなメッセージが表示され、ソート可能なフィールドすべてを表示します。
l を入力すると、top 出力に CPU 時間のカラムが表示されます。

Current Fields: AEHIOQTWKNMbcdfgjplrsuvyzX for window 1:Def

フィールド文字を通してフィールドを入れ替えします。
ほかのキーを入力すると元に戻ります。

実行プロセスの振るパス名や引数を取得するには?

top コマンドが実行中に、c を入力します。
以下に示すようにコマンドカラムに実行プロセスのフルパス名が表示されます。
たとえば、httpd と表示されずに /usr/local/apache2/bin/httpd と表示されます。

  PID USER   PR NI  VIRT RES  SHR S %CPU %MEM TIME+   COMMAND
11912 apache 15  0 31828 13m 3916 S    1  0.2 0:46.35 /usr/local/apache2/bin/httpd

top コマンドで個々の CPU を表示するには?

top コマンド実行中に 1(数字のいち)を入力します。
以下に示すようにマシン上の個々の CPU のパフォーマンスデータを表示します。

top - 13:10:13 up 171 days, 20:21, 3 users, load average: 0.01, 0.05, 0.00
Tasks: 194 total, 1 running, 193 sleeping, 0 stopped, 0 zombie
Cpu0 : 10.2% us, 2.6% sy, 0.0% ni,  86.8% id, 0.3% wa, 0.0% hi, 0.0% si 
Cpu1 :  9.6% us, 8.0% sy, 0.0% ni,  82.4% id, 0.0% wa, 0.0% hi, 0.0% si 
Cpu2 :  1.3% us, 1.3% sy, 0.0% ni,  95.0% id, 2.3% wa, 0.0% hi, 0.0% si 
Cpu3 :  0.0% us, 0.0% sy, 0.0% ni, 100.0% id, 0.0% wa, 0.0% hi, 0.0% si
Mem:  1034624k total, 1007420k used,   27204k free, 174540k buffers