TOP(1)

名称
top - CPU プロセスの上位リストに関する情報を表示/更新する

書式
top [ -SbiInqutv ] [ -dcount ] [ -stime ] [ -ofield ] [ -Uusername ] [ -mio|cpu ] [ number ]

解説
top はシステム内の上位 プロセスを表示し、その情報を定期的に更新します。 生の CPU パーセンテージを用いてプロセス順位を決めます。もし number が指定されると、デフォルト値に代えて、上位 number プロセスが表示されます。

top の動作は高機能端末とそうでない端末とで異なります。 この差異によって、いくつかのオプションのデフォルト値も変わってきます。 以下の部分では、"インテリジェント" 端末とは、 カーソルアドレシング、画面クリアおよび行末までのクリアをサポートしている 端末のことを指します。 逆に "ダム" 端末とは、そのような機能をサポートしていないものを いいます。 top の出力をファイルにリダイレクトすると、 あたかもダム端末上で動作しているように振る舞います。

オプション

-S  システムプロセスも画面に表示します。 pager や swapper といったシステムプロセスは通常、表示されませんが、 このオプションによりそれらも見えるようになります。

-b  "バッチ" モードにします。 バッチモードでは、端末からの入力は全て無視されます。 ただし割り込みキャラクタ (^C や ^\ など) は有効です。 ダム端末上で実行する場合や出力先が端末以外の場合は、これがデフォルトです。

-i  "対話的実行" モードにします。 対話的実行モードでは、あらゆる入力は直ちに読み込んで処理されます。 どのキーがどういう機能をもっているかについては、 "対話的実行モード" のセクションを参照して下さい。 コマンドが処理されると、そのコマンドが理解されなかった場合でも、 画面は直ちに更新されます。 出力先がインテリジェント端末の場合は、これがデフォルトです。

-I  アイドル状態のプロセスを表示しません。 デフォルトでは、 top はアクティブプロセスもアイドルプロセスも両方とも表示します。

-t  top プロセスを表示しないようにします。

-mdisplay
    デフォルトは 'cpu' です。

-n  "非対話的実行" モードにします。 これは "バッチ" モードと同じです。

-q  top を -20 に renice し、より高速に実行されるようにします。 この機能は、システムが大変重い場合に、問題箇所を発見する可能性を高めるために 用いられます。 このオプションは root のみ使用可能です。

-u  uid 値をユーザ名に変換する時間を割かないようにします。 通常、 top は必要に応じてファイル "/etc/passwd" を読み、 出現する全てのユーザ id 値をログイン名に変換します。 このオプションはその変換を全て止め、できるだけ実行時間を低減させます。 ログイン名の代わりに uid 値が表示されます。

-v  バージョン番号情報を標準エラー出力へ書き出し、即座に終了します。 このオプションが使用された場合、他の処理は行われません。 top 実行中に現在のリビジョン情報を閲覧したい場合、 ヘルプコマンド "?" を使用してください。

-dcount
    count 回だけ表示し、その後終了します。 1 回の表示とは、1 回の画面更新のことです。 このオプションにより、ユーザは希望する回数だけ状況を表示し、 その後自動的に top を終了させることができます。 インテリジェント端末では、表示回数の上限は設定されていません。 ダム端末ではデフォルト値は 1 回です。

-stime
    画面更新間隔を time 秒に設定します。デフォルトの画面更新間隔は 秒です。

-ofield
    プロセス表示領域を指定したフィールドによってソートします。 フィールド名には出力で示されているカラム名を用いますが、小文字で指定します。 しばしば用いられる値は "cpu", "size", "res", "time" ですが、これは OS によっても異なります。 必ずしも全ての OS でこのオプションがサポートされているわけではないことに 注意して下さい。

-Uusername
    ユーザ username が所有しているプロセスのみ表示します。 現在のところ、このオプションはユーザ名指定のみ可能で、uid 値は指定できません。

count と number はいずれも "無限" を指定でき、 その場合、それらは可能な限り引き延ばされます。 これは、キーワード "infinity", "maximum", "all" のいずれかの、 一意に識別可能な先頭からの部分文字列を指定することで行われます。 実際、インテリジェント端末での count のデフォルト値は infinity となっています。

コマンドラインのオプションを調べる前に、 環境変数 TOP が調べられます。これによりユーザ自身のデフォルト値を設定できます。 表示プロセス数も環境変数 TOP で指定可能です。 オプション -I, -S, -u, -t は実際はトグルオプションです。これらのオプションを 2 回指定すると、 最初の指定を無効にします。 ですから、環境変数 TOP を "-I" と設定しているユーザは、 "top -I" とすることでアイドルプロセスの状況を見ることができます。

対話的実行モード
"対話的実行モード" で動作している場合、 top は端末からコマンドを読み込み、それに応じて動作を行います。 このモードでは端末は "CBREAK" モードに設定され、 入力文字が速やかに処理されるようになります。 top の表示と表示の間、 つまり top が time 秒が経過するのを待っている間、ほとんどいつでもキー入力可能です。 実際キーが押されると、そのコマンドは直ちに処理され、 画面が更新されます (そのコマンドが指示した変更も反映されます)。 これはコマンドが正しくない場合にも行われます。 画面を更新している最中にキーが押されると、 top は画面更新を終らせて、そのコマンドを処理します。 コマンドによっては更に情報の指定が必要になるものもありますが、 その場合、それに応じてユーザに入力が求められます。 その情報を入力する間、ユーザの削除キーと行削除キー ( stty コマンドで設定される) が利用でき、改行により入力が完了します。

現在のところ、以下のコマンドが利用可能です (^L は control-L を表します):

^L  画面を再描画します。

h or ?
    コマンド一覧 (ヘルプ画面) を表示します。 バージョン情報がこの画面に含まれます。

q   top を終了します。

d   表示する画面数を変更します (新しい数値入力が求められます)。 次回の表示が 1 回目となります。ですから d1 と入力すると、 top は 1 回表示して直ちに終了します。

m

n or #
    表示するプロセス数を変更します (新しい数値入力が求められます)。

s   表示間隔の秒数を変更します (新しい数値入力が求められます)。

S   システムプロセスの表示をトグルします。

k   プロセスリストにシグナル (デフォルトでは "kill") を送ります。 kill(1) コマンドと同様の働きをします。

r   プロセスリストの優先度 ("nice" 値) を変更します。 renice(8) コマンドと同様の働きをします。

u   指定したユーザ名のユーザが所有するプロセスのみ表示します (ユーザ名入力 が求められます)。 ユーザ名として単に "+" が指定された場合、 全ユーザのプロセスが表示されます。

o   表示のソート順序を変更します。 必ずしも全ての OS でこのオプションがサポートされているわけではありません。 ソートキーはシステムによって異なりますが、通常は次のものが含まれます: "cpu", "res", "size", "time"。 デフォルトは cpu です。

e   前回の kill または renice コマンドで生じたシステムエラーがあれば、そのリストを表示します。

i   (または I) アイドルプロセスの表示有無を切り替えます。

t   top の表示有無を切り替えます。

表示
実際の表示画面は、そのマシンで動作している Unix の種類によって異なります。 ここでの説明は、この特定マシンで動作する top コマンドの出力と 厳密には合っていないかもしれません。 相違点はこのマニュアルの終りに示してあります。

表示画面の先頭数行にはシステム状態に関する情報として、 プロセスに割り当てられた最終プロセス ID (ほとんどのシステム)、 3 種のロードアベレージ、現在時刻、存在するプロセス数、 各状態 (sleep 中、実行中、実行開始中、ゾンビ、停止中) のプロセス数、 各プロセッサ状態 (ユーザ, nice, システム, アイドル) で消費した時間の割合 等が表示されます。 物理メモリおよび仮想メモリの割り当てに関する情報も表示されます。

画面の残りの部分には各プロセスに関する情報が表示されます。 表示項目は、内容的には ps(1) に似ていますが、正確には同じではありません。 PID はプロセス id、USERNAME はプロセス所有者名 ( -u 指定時は UID カラムが USERNAME に取って替わる)、 PRI は現在のプロセス優先度、 NICE は nice 値 (-20 から 20 までの範囲)、 SIZE はプロセスサイズの合計 (text, data, stack)、 RES は現在のメモリ常駐量 (SIZE と RES はいずれもキロバイト単位)、 STATE は現在の状態 ("sleep", "WAIT", "run", "idl", "zomb", "stop" のいずれか)、 TIME はプロセスが消費したシステム時間およびユーザ時間の秒数、 WCPU は (もしあれば) 重み付き CPU パーセンテージ (これは ps(1) が CPU として表示するものと同じ)、 CPU は生のパーセンテージで、プロセス順序を決めるソート処理に用いられるもの、 そして COMMAND はプロセスが現在実行しているコマンド名です (もしプロセスが スワップアウト中なら、このカラムには "<swapped>" という印がつく)。

注意
"ABANDONED" 状態 (カーネル中では "SWAIT" 状態として 知られています) は捨て去られたものゆえ、この名称がついています。 プロセスはこの状態で終るべきではありません。

作者
William LeFebvre, EECS Department, Northwestern University

環境変数
TOP    ユーザが設定できるオプションのデフォルト値

関連ファイル
/dev/kmem    カーネルメモリ
/dev/mem    物理メモリ
/etc/passwd    uid 値をユーザ名に変換するのに使用
/boot/kernel/kernel    システムイメージ

バグ
-I のデフォルト値が もう一度変更されましたが、私を責めないで下さい。 top が全プロセスを表示するわけではないことで大変多くの人が混乱したため、 バージョン 2 の頃と同様、デフォルトでアイドルプロセスも表示することに 決めました。 しかしこの動作に耐えられない人々のために、環境変数 TOP に "デフォルト" オプションを設定しておく機能を 追加しました (オプションのセクションを参照)。 バージョン 3.0 が持っている振る舞いが必要な人は、環境変数 TOP に値 "-I" を設定するだけで OK です。

スワップされたプロセスに対するコマンド名は追跡すべきですが、 それを行うとプログラムの動作が遅くなるでしょう。

ps(1) と同様、 top が更新情報を収集している間に事態が変化する可能性があります。 表示内容は現実に近い近似値に過ぎません。

関連項目
kill(1), ps(1), stty(1), mem(4), renice(8)

FreeBSD に関する注

スレッド表示
'-H' オプションは、 カーネルから見えるスレッドコンテキストの表示を切り替えます。 実行時には、'H' キーがこのモードを切り替えます。 デフォルトは OFF です。

メモリに関する説明
Mem: 9220K Active, 1032K Inact, 3284K Wired, 1MB Cache, 2M Buf, 1320K Free Swap: 91M Total, 79M Free, 13% Inuse, 80K In, 104 K Out K: キロバイト。

M:  メガバイト。

%:  1/100。

Active:
    アクティブなページ数。

Inact:
    アクティブでないページ数。

Wired:
    固定されているページ数。キャッシュされたファイルデータページを含む。

Cache:
    VM レベルのディスクキャッシュに使用しているページ数。

Buf:
    BIO レベルのディスクキャッシュに使用しているページ数。

Free:
    未使用ページ数。

Total:
    使用可能なスワップ合計。

Free:
    未使用スワップ合計。

Inuse:
    使用中スワップ。

In: (直前の表示間隔において) スワップデバイスからページインしたページ数

Out:
    (直前の表示間隔において) スワップデバイスにページアウトしたページ数