TOP(1)

名前
top - Linux のタスクを表示する

書式
top -hv | -bcisS -d delay -n iterations -p pid [, pid ...] 昔からのスイッチ '-' と空白の指定は任意である。

説明
top プログラムは稼働中のシステムの 動的なリアルタイムの概要を報告する。 Linux カーネルが現在管理しているタスクの一覧だけでなく、 システムの概要情報も表示できる。 表示されるシステムの概要情報のタイプと 各タスクについて表示される情報のタイプ・順序・サイズは、 ユーザーが全て設定可能で、その設定は次に起動したときにも保存できる。 このプログラムはプロセスの操作に関する 限定された対話型インタフェースだけでなく、 個人用の設定についての特に拡張されたインタフェースも提供している。 -- 操作の全ての面についての包括的なインタフェースを提供している。 このプログラムは、この文書を通して top という名前で呼ばれているが、 希望する任意の名前にすることができる。 新しい名前 (エイリアスでもよい) は、top の表示に反映され、 設定ファイルを読み書きの際に使用される。

概要

  ドキュメント
これ以降の目次
    1. コマンドラインオプション
    2. フィールド / カラム
       a. フィールドの説明
       b. カラムの選択と順序指定
    3. 対話的コマンド
       a. グローバルなコマンド
       b. サマリーエリアのコマンド
       c. タスクエリアのコマンド
       d. カラーマップ
    4. 別形式の表示モード
       a. ウィンドウの概要
       b. ウィンドウのコマンド
    5. ファイル
       a. システム設定ファイル
       b. 個人設定ファイル
    6. くだらないトリックの例
       a. カーネルのトリック
       b. バウンドするウィンドウ
       c. 大きな雛鳥のようなウィンドウ
    7. バグ, 8. 以前の top の履歴, 9. 著者, 10. 関連項目

  操作
top を操作するときの最も重要な 2 つのキーは、 ヘルプ ('h' または '?') と終了 ('q') キーである。 終了させるときには、代わりとして、 単純に昔からの割り込みキー ('^C') を使うこともできる。 最初に top を起動する場合、 昔からの以下のスクリーンの要素が表示される: 1) サマリーエリア; 2) メッセージ/プロンプト行 3) カラムヘッダ; 4) タスクエリア。 しかし、以前の top と比較すると、いくつかの違いがある。

ハイライト
    サマリーエリア: 負荷 (load) / 稼働時間 (uptime) の値はハイライトされず、 その他の要素の値のみがハイライトされる。 タスクエリア: 実行中 (または実行の準備がされている) のタスクがハイライトされる。 これらのプロセスを強調する唯一の手段は太字で表示することである。

内容/ラベル
    サマリーエリア: プログラム名が表示される。 シンボリックリンク名またはエイリアスが表示される場合もある。 Cpu(s) 状態ラベルは他のものが表示される可能性を暗に示している。 メモリ統計では小文字 'k' が使用される。 カラムヘッダ: 新しいフィールドといくつかの変更されたラベルが表示される。 top をカスタマイズすれば新しいフィールドが更に表示される。

注意: top の表示は 512 文字に制限される。 全てのフィールドを表示するためには最低 160 文字が必要である。 残りの幅は 'Command' カラムに使用できる。

  起動時のデフォルト値
以下の起動時のデフォルトは、設定ファイルの使用を仮定していないので、 ユーザーはカスタマイズできない。 しかし、アスタリスク ('*') の付いたコマンドはコマンドラインで上書きできる。
    全体のデフォルト
       'A' - 別形式表示 Off (全画面)
     * 'd' - 遅延時間 3.0 秒
       'I' - Irix モード On ('solaris' smp ではない)
     * 'p' - PID の監視 Off
     * 's' - セキュアモード Off (非セキュアモード)
       'B' - 太字表示 Off
    サマリーエリアのデフォルト
       'l' - 負荷平均/稼働時間 On (プログラム名が表示される)
       't' - タスク/Cpu 統計 On (1+1 行。'1' を参照)
       'm' - メモリ/スワップ使用量 On (2 行を使う)
       '1' - シングル Cpu On (smp の場合 1 行になる)
    タスクエリアのデフォルト
       'b' - 太字によるハイライト On (背景と前景を「反転」しない)
     * 'c' - コマンドライン Off (コマンドラインではない名前)
     * 'i' - アイドルタスク On (全てのタスクを表示する)
       'R' - 逆順ソート On (pid の降順でソートする)
     * 'S' - 累積時間 Off (死んだ子プロセスを累積しない)
       'x' - カラムのハイライト Off (フィールドをソートする)
       'y' - 行のハイライト On (実行中のタスクが表示される)
       'z' - カラー/単色 Off (カラー表示しない)

1. コマンドラインオプション
top のコマンドラインの書式は、以下のように構成される:
     -hv | -bcisS -d delay -n iterations -p pid [,pid...] 一般には必須とされているスイッチ ('-') と空白でさえ、完全にオプションである。

-b : バッチモード 操作
    top を「バッチモード」で起動する。 top の出力を他のプログラムやファイルに送る場合に役立つ。 このモードでは、top は入力を受け付けず、 '-n' コマンドラインオプションで設定された繰り返し回数に達するか、 kill されるまで実行を続ける。

-c : コマンドライン/プログラム名 トグル
    最後に記録された 'c' の状態を逆にして、top を起動する。 よって、top がコマンドラインを表示していた場合は、プログラム名を表示する。 プログラム名を表示していた場合は、コマンドラインを表示する。 より詳しい情報は対話的コマンド 'c' を参照すること。

-d : 遅延時間 間隔:  -d ss.tt (秒.1/10秒)
    スクリーンを更新する間隔を指定する。 ユーザー個人の設定ファイルにあるこれに対応する値、 または起動時のデフォルトの値を上書きする。 実行後に対話的コマンド 'd' または 's' で変更できる。 小数点以下の秒も指定できるが、負数は許可されない。 しかし全ての場合において、 top が「セキュアモード」で実行されているときには、 このような変更は禁止されている。 ただし root の場合 (かつコマンドラインオプション 's' が使われていない場合) は除く。 「セキュアモード」についてのより詳しい情報は、 「5a. システム設定ファイル」の話題を参照すること。

-h : ヘルプ
    ライブラリのバージョンと使用法のプロンプトを表示して、終了する。

-i : アイドルプロセス トグル
    最後に記録された 'i' の状態を逆にして、top を起動する。 トグルが Off の場合、アイドルタスクまたはゾンビタスクは表示されない。

-n : 繰り返し回数 制限:  -n number
    top が終了するまでの繰り返し回数またはフレームの最大数を指定する。

-u : ユーザーを指定して監視する:  -u somebody
    指定された実効 UID または実効ユーザー名にマッチするプロセスのみを監視する。

-U : ユーザーを指定して監視する:  -U somebody
    指定された UID またはユーザー名にマッチするプロセスのみを監視する。 実・実効・保存・ファイルシステム UID とマッチするものが選ばれる。

-p : PID を指定して監視する:  -pN1 -pN2 ...  または  -pN1, N2 [,...]
    指定されたプロセス ID とマッチするプロセスのみを監視する。 このオプションを 20 個まで指定するか、 コンマで区切った 20 個までのプロセス ID を指定することができる。 両方を混ぜて使用することもできる。 これはコマンドラインオプションでのみ指定できる。 通常の操作に戻したい場合は、top を終了して再起動する必要はなく -- 対話的コマンド '=' を実行するだけでよい。

-s : セキュアモード 操作
    たとえ root であっても、強制的にセキュアモードにして top を起動する。 このモードはシステムの設定ファイルで制御する方が、更に良い。 (「5. ファイル」の話題を参照すること)。

-S : 累積時間モード トグル
    最後に記録された 'S' の状態を逆にして、top を起動する。 「累積モード」が On の場合、各プロセスは そのプロセスとそのプロセスの終了した子プロセスで使われた cpu 時間とともに表示される。 このモードのより詳しい情報については、対話的コマンド 'S' を参照すること。

-v : バージョン
    ライブラリのバージョンと使用法のプロンプトを表示して、終了する。

2. フィールド / カラム

  2a. フィールドの説明
top で表示可能なフィールドを以下にリストする。 これらのフィールドは、 対話的コマンド 'o' (フィールドの順序変更) で指定できる位置に関わらず、 以下で示す文字と常に関連付けられている。 全てのフィールドはソート対象として選択可能であり、 降順でソートするか昇順でソートするかを制御できる。 ソート機能についての詳しい情報は「3c. タスクエリアコマンド」の話題を参照すること。

a: PID  --  プロセス ID
    タスクの一意なプロセス ID。 定期的に同じ番号が使われるが、0 から再スタートすることはない。

b: PPID  --  親プロセスのプロセス ID
    タスクの親タスクのプロセス ID。

c: RUSER  --  実ユーザー名
    タスクの所有者の実ユーザー名。

d: UID  --  ユーザー ID
    タスクの所有者の実効ユーザー ID。

e: USER  --  ユーザー名
    タスクの所有者の実効ユーザー名。

f: GROUP  --  グループ名
    タスクの所有者の実効グループ名。

g: TTY  --  制御端末
    制御端末の名前。 通常はプロセスが開始されたデバイス (シリアルポート、疑似端末 (pty) など) であり、入出力に使われる。 しかしタスクは端末に関連付ける必要はなく、その場合は '?' が表示される。

h: PR  --  優先度
    タスクの優先度

i: NI  --  nice 値
    タスクの nice 値。 負の nice 値は高い優先度を意味し、正の nice 値は低い優先度を意味する。 このフィールドが 0 の場合、タスクの割り当て (dispatchability) を決定する際に 優先度を調整していないこと意味する。

j: P  --  最後に使用された CPU (SMP)
    最後に利用されたプロセッサを表す値。 カーネルはわざと weak affinity を使っているので、 本当の SMP 環境では、この値は頻繁に変わりやすくなる。 また実行中の top の動作そのものが (cpu 時間に対する余分な要求となることによって) weak affinity を壊すかもしれず、 プロセスの CPU 変更がより多くなるかもしれない。

k: %CPU  --  CPU 使用率
    前回のスクリーン更新からの、タスクの所要 CPU 時間の占有率。 総 CPU 時間のパーセンテージで表される。 本当の SMP 環境では、「Irix モード」が Off の場合、 top は「Solaris モード」で操作し、 タスクの cpu 使用率は総 CPU 数で割り算される。 'Irix/Solaris' モードは対話的コマンド 'I' でトグルできる。

l: TIME  --  CPU 時間
    タスクが開始してから利用した CPU 時間の総計。 「累積モード」が On の場合、 各プロセスは終了した子プロセスが使った cpu 時間とともにリストされる。 「累積モード」はコマンドラインオプションと対話的コマンドの 'S' でトグルできる。 このモードについての更なる情報は、対話的コマンド 'S' を参照すること。

m: TIME+  --  CPU 時間 (1/100 単位)
    'TIME' と同じであるが、精度を 1/100 秒単位まで反映させる。

n: %MEM  --  メモリ使用率 (RES)
    タスクが現在使用している利用可能な物理メモリの占有率。

o: VIRT  --  仮想イメージ (kb)
    タスクが使用している仮想メモリの総量。 コード・データ・共有ライブラリ・スワップアウトされているページが含まれる。 VIRT = SWAP + RES.

p: SWAP  --  スワップされたサイズ (kb)
    タスクの総仮想メモリイメージのうちスワップアウトされた部分。

q: RES  --  常駐サイズ (kb)
    タスクが使用しているスワップされていない物理メモリ。 RES = CODE + DATA. TP 3 r: CODE -- コードサイズ (kb) 実行可能コードに割かれる物理メモリの総量。 「テキスト常駐サイズ (text resident set)」または TRS とも呼ばれる。

s: DATA  --  「データ+スタック」のサイズ (kb)
    実行可能コード以外に割かれる物理メモリの総量。 「データ常駐サイズ (data resident set)」または DRS とも呼ばれる。

t: SHR  --  共有メモリサイズ (kb)
    タスクが利用している共有メモリの総量。 他のプロセスと共有される可能性のあるメモリを単純に反映している。

u: nFLT  --  ページフォールト回数
    あるタスクに対して起こったメジャーページフォールトの回数。 ページフォールトは、現在、アドレス空間にない 仮想ページに対してプロセスが読み書きしようとしたときに起こる。 メジャーページフォールトとは、あるページを利用可能にするために ディスクアクセスが起こる場合のことである。

v: nDRT  --  ダーティページ数
    最後に書き込まれてから変更されたページの数。 ダーティページは、対応する物理メモリの場所が他の仮想ページで使用される前に、 ディスクに書き込まれなければならない。

w: S  --  プロセス状態
    タスクの状態は以下のいずれかである:
       'D' = 割り込み不可能なスリープ状態
       'R' = 実行中
       'S' = スリープ状態
       'T' = トレース中/停止された
       'Z' = ゾンビ 実行中と表示されるタスクは「実行準備済み」と考えるのがより正しいだろう。 -- タスクの task_struct は Linux の実行キューで表現されている。 本当の SMP マシン以外でさえ、top の遅延間隔と nice 値に依っては、 この状態のタスクを非常に多く目にするだろう。

x: Command  --  コマンドラインまたはプログラム名
    タスクを開始するのに使ったコマンドライン、 またはタスクに関連づけられたプログラムの名前を表示する。 コマンドラインとプログラム名は、 コマンドラインオプションと対話的コマンドの 'c' でトグルできる。 コマンドラインの表示を選択した場合、 (カーネルスレッドのように) コマンドラインのないプロセスは、 以下の例のように、プログラム名だけが括弧で括られて表示される。
          ( mdrecoveryd ) コマンドライン・プログラム名の表示が 現在のフィールド幅に対して長すぎる場合は、切り詰められる場合がある。 フィールド幅はその他に選択されているフィールド・フィールドの順番・ 現在のスクリーン幅に依存する。 注意: 'Command' フィールド/カラムは固定幅でないという点が特殊である。 表示の際、このカラムは残りの全てのスクリーン幅 (最大 512 文字) が割り当てられる。 これは、プログラム名からコマンドラインへの切り替えで 文字数が増える場合に備えるためである。

y: WCHAN  --  スリープしている関数
    カーネルリンクマップ ('System.map') が利用可能かに否かによって、 タスクが現在スリープしているカーネル関数の名前またはアドレスが表示される。 実行中のタスクでは、このカラムにダッシュ ('-') が表示される。 注意: このフィールドを表示すると、 top 自身のワーキングセットが 700Kb 増加する。 このオーバーヘッドを減らす唯一の方法は、top を停止して再起動することである。

z: Flags  --  タスクフラグ
    このカラムにはタスクの現在のスケジューリングフラグが 0 を省略した 16 進数で表示される。 これらのフラグは公式には <linux/sched.h> に書かれている。 公式なものではないが、「フィールド選択」スクリーンと 「フィールド順序指定」スクリーンにも説明がある。

  2b. カラムの選択と順序指定
対話的コマンド 'f' (フィールド選択) または 'o' (フィールド順序指定) を入力すると、 現在のフィールド文字列とその説明が記述されたスクリーンが表示される。 以下は、top の 4 つのウィンドウ・フィールドグループのうちの 1 つの サンプルのフィールド文字列と、 使用される代表的なフィールドの説明である。 サンプルのフィールド文字列:
   ANOPQRSTUVXbcdefgjlmyzWHIK 表示されるフィールドの順番は、文字列中の文字の順番に対応する。 文字が大文字の場合、(スクリーン幅が許すならば) そのフィールド自身がタスク表示の一部として表示される。 これは以下の抜粋のように、先頭のアスタリスク ('*')でも示される:
    ...
    * K: %CPU = CPU usage
      l: TIME = CPU Time
      m: TIME+ = CPU Time, hundredths
    * N: %MEM = Memory usage (RES)
    * O: VIRT = Virtual Image (kb)
    ...

フィールド選択スクリーン  --  対話的コマンド 'f'
    対応する文字を入力することで表示をトグルできる。

フィールド順序指定スクリーン  --  対話的コマンド 'o'
    対応する大文字を入力することでフィールドを左に移動できる。 また小文字を入力することで右に移動できる。

3. 対話的コマンド
以下に挙げたものは、コマンドをカテゴリ分けした簡単な索引である。 いくつかのコマンドは 1 回以上書かれている -- これはコマンドの意味やスコープが、 そのコマンドが発行された状況に依存するためである。
  3a. グローバルなコマンド
        <Ret/Sp> ?, =, A, B, d, G, h, I, k, q, r, s, W, Z
  3b. サマリーエリアのコマンド
        l, m, t, 1
  3c. タスクエリアのコマンド
        外観: b, x, y, z
        内容: c, f, o, S, u
        サイズ: #, i, n
        ソート: <, >, F, O, R
  3d. カラーマッピング
        <Ret>, a, B, b, H, M, q, S, T, w, z, 0 - 7
  4b. ウィンドウのコマンド
        -, _, =, +, A, a, G, g, w

  3a. グローバルなコマンド
グローバルな対話的コマンドは常にフルスクリーンモードと別形式の表示モードで使用可能である。 しかし「セキュアモード」で動作している場合には、 これらの対話的コマンドのいくつかは使用できなくなる。 top がセキュアモードか否かを前もって知りたい場合は、 ヘルプコマンドを実行し、2 行目のシステムサマリーを見るだけでよい。

<Enter> または <Space> :表示の再描画
    これらのコマンドは何も行わず、単に無視される。 しかし、これらのコマンドは top を目覚めさせ、 (最後の画面更新の) 後で表示全体が再描画される入力が 受け付けられていた場合はそれを知らせる。 遅延間隔が長いときに現在の状態を知りたい場合は、 これらのキーのいずれかを使うこと。

'?' または 'h' :ヘルプ
    2 つのヘルプレベルが使用可能である。 1 つ目では全ての基本的な対話的コマンドのメモを表示する。 top がセキュアな場合、このスクリーンは省略される。 ヘルプスクリーンで 'h' または '?' を入力すると、 別形式の表示モードの対話的コマンドのヘルプに移動する。

'=' :タスク制限の終了
    表示されるタスクの制限をなくす。 このコマンドは有効になっている 'i' (アイドルタスク) コマンドと 'n' (最大タスク数) コマンドを無効にする。 このコマンドは PID を指定した監視の「終了」も行う。 PID を指定した監視についての議論は、コマンドラインオプション '-p' を参照すること。 別形式の表示モードで実行すると、このコマンドは少し広い意味を持つ。

'A' :別形式の表示モードのトグル
    このコマンドはフルスクリーンモードと別形式の表示モードを切り替える。 「カレント」ウィンドウとフィールドグループについて知るには、 4. 別形式の表示モードと対話的コマンド 'G' の話題を参照すること。

'B' :太字の有効／無効のトグル
    このコマンドは terminfo の「太字」機能を使用するか否かに影響し、 サマリーエリアとタスクエリアの両方の「カレント」ウィンドウを変更する。 このコマンドは本来はダム端末での使用を意図したものであるが、 いつでも適用できる。 注意: このトグルが On で top がモノクロモードで動作している場合、 表示全体が通常のテキストになる。 よって、'x' と 'y' (またはその一方) のトグルを使って、 強調のために表示状態を逆にしない限り、 これらのトグルが On になっていても、表示上は確認できない。

* 'd' または 's' :遅延時間間隔の変更
    秒単位の遅延時間 (表示を更新する間隔) を入力するための プロンプトが表示される。 小数以下の秒も受け付けるが、負の数は許されない。 0 を入力すると (ほぼ) 連続で更新され、 システムと端末ドライバが top の要求に遅れないようするので、 不満足な表示になってしまう。 システムの負荷は遅延の値に反比例するので、 気をつけて設定すること。 現在の遅延時間を知りたい場合は、好きなときに単にヘルプコマンドを実行して、 システムサマリーの 2 行目を見ればよい。

'G' :別ウィンドウ/フィールドグループの選択
    1 から 4 までの数字を入力するためのプロンプトが表示される。 この数字は「カレント」ウィンドウに設定するウィンドウ/フィールドグループを示す。 特に別形式の表示モードを試してみると、 すぐにこれらの 4 つのウィンドウの満足度が増すだろう。

'I' :Irix/Solaris モードのトグル
    「Solaris モード」('I' トグルの Off) で動作している場合、 タスクの cpu 使用率は CPU の個数で割り算される。 このコマンドを実行すると、このトグルの新しい状態が表示される。

'u' :ユーザーの選択
    UID またはユーザー名を入力するプロンプトが出る。 選択されたユーザーに属するプロセスのみが表示される。 このオプションは実効 UID にマッチする。

'U' :ユーザーの選択
    UID またはユーザー名を入力するプロンプトが出る。 選択されたユーザーに属するプロセスのみが表示される。 このオプションは実・実効・保存・ファイルシステム UID にマッチする。

* 'k' :タスクの kill
    最初に PID を入力するプロンプトが出され、 その後、送信するシグナルを入力するプロンプトが出される。 プロンプトから反映されるデフォルトのシグナルは SIGTERM である。 しかし、数値または名前を指定して任意のシグナルを送ることができる。 kill を行う手順から抜けたい場合は、 どこまで進んだかによって、以下の何れかを行えばよい:
       1) pid プロンプトでは、単に <Enter> を押す。
       2) シグナルプロンプトでは、0 を入力する。

'q' :終了

* 'r' :タスクの renice
    最初に PID を入力するプロンプトが出され、 その後、そのプロセスに設定する nice の値を入力するプロンプトが出される。 正の値を入力すると、プロセスの優先度は低くなる。 逆に負の値を入力すると、そのプロセスはカーネルから現在より有利に扱われる。

'W' :設定ファイルの書き出し
    オプション・トグル・現在のディスプレイモード・遅延時間の全てを保存する。 top を終了する直前にこのコマンドを発行すると、 全く同じ状態で後から再起動できる。

'Z' :カラーマッピングの変更
    このキーを入力すると、「カレント」ウィンドウまたは全てのウィンドウの色を 変更する別のスクリーンに移る。 この対話的コマンドについての詳細は、3d. カラーマッピングの話題を参照すること。

*   アスタリスク ('*') が付いたコマンドは「セキュアモード」では使用できない。 また、これらのコマンドはレベル 1 のヘルプスクリーンに表示されない。

  3b. サマリーエリアにおけるコマンド
サマリーエリアの対話的コマンドはフルスクリーンモードと別形式の表示モードの両方において常に利用可能である。 これらは表示の先頭行に影響し、メッセージとプロンプトの位置を決定する。 これらのコマンドは常に「カレント」ウィンドウ/フィールドグループにだけ影響を与える。 「カレント」ウィンドウとフィールドグループについての洞察は、 4. 別形式の表示モードと対話的コマンド 'G' の話題を参照すること。

'l' :負荷平均/uptime のトグル  --  On/Off
    フルスクリーンモードで動作している場合は、 プログラム名 (エイリアスの可能性もある) の行も含まれる。 また別形式の表示モードで動作している場合は、「カレント」ウィンドウ名も含まれる。

'm' :メモリ/スワップ利用量のトグル  --  On/Off
    このコマンドはサマリーエリアの 2 行に影響する。

't' :タスク/CPU 状態のトグル  --  On/Off
    このコマンドは、'1' トグルの状態と top が本当の SMP で 動作しているか否かによって、サマリーエリアの 2 行以上に影響する。

'1' :1 つに纏めた CPU 状態/個々の CPU 状態のトグル  --  On/Off
    このコマンドは 't' コマンドで CPU 状態の部分をどのように表示するかに影響する。 このコマンドは元々は大規模並列な SMP マシンで使用するためにあるが、 SMP 環境にのみ限定されるわけではない。 サマリーエリア で 'Cpu(s):' と表示されている場合、'1' トグルは On であり、 全ての cpu 情報が 1 行に集計される。 そうでないの場合、各 cpu は 'Cpu0, Cpu1, ...' のように分けて表示される。

注意: どのウィンドウにおいてもサマリーエリア全体のトグルが Off の場合は、 メッセージ行のみが残される。 このようにして、フルスクリーンモードにおけるプログラム名 または別形式の表示モードにおける「カレント」ウィンドウ名を (一時的に) 犠牲にして、 利用可能なタスク行を最大化できる。

  3c. タスクエリアにおけるコマンド
タスクエリアの対話的コマンドはフルスクリーンモードにおいて常に利用可能である。 タスクエリアの対話的コマンドは、「カレント」ウィンドウのタスク表示が Off になっている場合 (4. 別形式の表示モードの話題を参照すること) は、別形式の表示モードでは全く利用できない。

タスクウィンドウの外観
以下のコマンドもグローバルな 'B' (太字の無効) トグルの状態に影響を受ける。

'b' :太字/反転のトグル
    このコマンドは 'x' と 'y' トグルがどのように表示されるかに影響する。 さらにこのコマンドはこれらのトグルのうち 少なくとも 1 つが On になっている時にのみ利用可能である。

'x' :カラムのハイライトのトグル
    現在のソートフィールドのハイライトを変更する。 ソートフィールドを常に視覚的に知らせる必要はたぶんない。 またパスが長くなってしまうので、ユーザーは常に 「カラムのハイライト」を Off にして実行するだろうと top は仮定している。 どのフィールドでソートされているかを忘れてしまった場合、 このコマンドはすぐに視覚的に知らせてくれる。

'y' :行のハイライトのトグル
    「実行中」のタスクのハイライトを変更する。 このタスク状態についての更なる考察は、 2a. フィールドとプロセス状態の説明の話題を参照すること。 この機能はシステムの健康状態をみるための重要な情報を提供する。 このコマンドのコストは、端末のエスケープシーケンスするだけで、 わずかなものである。

'z' :カラー/モノクロのトグル
    「カレント」ウィンドウの色を、最も最近使われたカラー形式と、 白地に黒または黒地に白という古くからの形式で切り替える。 このコマンドはサマリーエリアとタスクエリアの両方を変更するが、 'x', 'y', 'b' トグルの状態には影響しない。

タスクウィンドウの内容
'c' :コマンドライン/プログラム名のトグル
    このコマンドは「コマンド」カラムが 現在表示されているか否かによらず、受け付けられる。 後でコマンドフィールドが表示に含まれるようになると、 ユーザーが適用した変更はすぐに反映される。
'f' と 'o' :フィールド選択または順序指定
    これらのキーを押すと、別のスクリーンが表示される。 このスクリーンでは、どのフィールドを表示するかと フィールドの順序が変更できる。 これらの対話的コマンドについての更なる情報は、 2b. カラムの選択と順序指定の話題を参照すること。
'S' :累積時間モードのトグル
    「累積モード」が On の場合、各プロセスはそのプロセス自身と そのプロセスの死んだ子プロセスの cpu 時間とともにリストされる。 Off の場合、多くの別々のタスクにフォークするプログラムは、現れづらい 'init' やシェルのようなプログラムは表示されるが、 その他のコンパイラなどはたぶん表示されない。 ソートフィールドが等しく 'S' の状態が異なる 2 つのタスクウィンドウを試して、 どちらの表示法がよいか見て欲しい。 このコマンドを発行すると、このトグルの新しい状態が表示される。 「累積モード」が有効になっているかを前もって知りたい場合は、 単にヘルプを実行して、ウィンドウサマリーの 2 行目を見ればよい。
'u' :指定されたユーザーのみの表示
    表示するユーザーの名前を入力するプロンプトが出される。 それ以降は、タスクウィンドウにはマッチするユーザー ID のみが表示される。 タスクが何も表示されなくなる場合もある。 後になって全てのタスクを再び監視したくなった場合は、 このコマンドを再度発行すればよい。 ただし、プロンプトに名前は入力せず、単に <Enter> を押す。
タスクウィンドウのサイズ
'i' :アイドルプロセスのトグル
    全てのタスクまたはアクティブなタスクのみを表示する。 このトグルが Off の場合、アイドルプロセスまたはゾンビプロセスは表示されない。 別形式の表示モードにおいて最後のタスク表示に対してこのコマンドが適用されても、 それより前の全てのタスク表示は既に表示されているので、 ウィンドウのサイズには影響しない。
'n' または '#' :最大タスク数の設定
    表示するタスク数を入力するプロンプトが出される。 ユーザーが指定した数以下で、 かつ利用可能なスクリーンの行数が使用される。 別形式の表示モードにおいて使用されると、 このコマンドは、最後のタスク表示を除き、 現在表示されている各タスク表示のサイズを正確に制御できる。 それより前の全てのタスク表示は既に描画されているので、 最後のウィンドウのサイズには影響しない。 注意: 別形式の表示モードにおいて最後に表示されるタスク表示のサイズを大きくしたい場合は、 それより前のタスク表示のサイズを小さくすること。
タスクウィンドウのソート
互換性のため、この top は以前の top で使われていた 多くのソートキーをサポートしている。 元来これは以前の top のユーザーへのサービスなので、 これらのコマンドはヘルプスクリーンには現れない 。
   コマンド ソートフィールド サポート
     A 開始時間 (非表示) No
     M %MEM Yes
     N PID Yes
     P %CPU Yes
     T TIME+ Yes 以下のソート機能を使う前に、対話的コマンド 'x' を使って カラムのハイライトを一時的に有効にすることを奨める。 これは実際のソート環境がユーザーの意図に合っているかを確認する助けになる。 現在のソートフィールドが表示されている場合にのみ、 以下の対話的コマンドを受け付ける。 ソートフィールドは次の理由により表示されていないかもしれない:
     1) スクリーン幅が足りない。
     2) 対話的コマンド 'f' が Off である。
'<' :ソートフィールドを左へ移動
    ソートフィールドが表示されている最初のフィールドでない限り、 ソートカラムを左へ移動する。
'>' :ソートフィールドを右へ移動
    ソートフィールドが表示されている最後のフィールドでない限り、 ソートカラムを右へ移動する。
現在のソートフィールドが表示されているか否かに関わらず、 以下の対話的コマンドは常に受け付ける。
'F' または 'O' :ソートフィールドの選択
    これらのキーは別のスクリーンを表示させる。 このスクリーンでは、どのフィールドをソートカラムとするかを変更できる。 以前には表示されていなかったフィールドが選択された場合、 そのフィールドは top の表示に戻るときに強制的に On にされる。 しかし、スクリーン幅と選択したフィールドの順序によっては、 ソートフィールドは表示されないかもしれない。 この対話的コマンドは、カラムのハイライトをOffにして top を実行しているときに、 現在のソートフィールドをとても簡単に確認できる便利な方法である。
'R' :ソートフィールドの逆順/正順のトグル
    この対話的コマンドを使うと、「高い方から低い方」と「低い方から高い方」を 切り替えることができる。
注意: フィールドのソートには、カラムに表示されている値ではなく、 内部的な値を使っている。 よって、TTY と WCHAN フィールドは厳密な ASCII 照合順序 (collating sequence) には違反するかもしれない。

  3d. カラーマッピング
対話的コマンド 'Z' を発行すると、別のスクリーンが表示される。 このスクリーンでは、top の表示に戻る前に、 「カレント」ウィンドウのみまたは 4 つのウィンドウ全ての色を変更できる。
利用可能な対話的コマンド
    4 つの大文字で対象を選択する。
    8 つの数字で色を選択する。
    通常のトグルが利用可能である
        'B' :太字の無効/有効
        'b' :実行中のタスクを「太字」/反転
        'z' :カラー/モノクロ
    その他のコマンドも利用可能である
        'a'/'w' :適用し、次／前へ行く。
        <Enter> :適用し、終了する。
        'q' :現在の変更を破棄し、終了する。 'a' または 'w' を使って対象となるウィンドウを順番に選択し、 そのウィンドウを抜けるときに表示されているカラー形式を適用できる。 もちろん、任意のウィンドウに戻って別な色を再適用したり、 'z' トグルで色を完全に Off にすることも簡単にできる。 カラーマッピングスクリーンは、フルスクリーンモードまたは別形式の表示モードにおける 「カレント」ウィンドウ/フィールドグループを変更するのにも使える。 'q' または <Enter> が押されたときに対象とされていたフィールドは、 top の表示に戻ったときにカレントフィールドにされる。

4. 別形式の表示モード

  4a. ウィンドウの概要
フィールドグループ/ウィンドウ:
    フルスクリーンモードでは、スクリーン全体で表される単一のウィンドウがある。 この単一のウィンドウは、 4 つの異なるフィールドグループ (以下で繰り返し出てくる対話的コマンド 'G' を参照すること) のうち 1 つのフィールドグループの表示に変更することもできる。 4 つのフィールドグループの各々には、 個別に設定可能なサマリーエリアとフィールドグループ毎のタスクエリアがある。 別形式の表示モードでは、これら 4 つのフィールドグループは同時に表示することもできるし、 コマンドで個別に Off にすることもできる。 サマリーエリアは、たとえそのメッセージ行だけであっても、常に存在する。 どの時点でも1 つのサマリーエリアだけを表示することができる。 しかし、コマンドによっては、0 から 4 個までの 別々のタスク表示がスクリーンに表示されているかもしれない。
カレントウィンドウ:
    「カレント」ウィンドウとは、サマリーエリアに関連づけられたウィンドウと、 タスクに関連するコマンドが常に送られるウィンドウである。 別形式の表示モードでは、タスク表示 のトグルを Off できるので、 いくつかのコマンドは「カレント」ウィンドウでは制限されるかもしれない。 サマリーエリアの先頭行のトグルを Off にすると、更に複雑になる。 ウィンドウ名 ('l' でトグルされる行) がないと、 どのウィンドウが「カレント」ウィンドウなのか簡単に分からなくなる。

  4b. ウィンドウにおけるコマンド
'-' と '_' :ウィンドウの表示/非表示のトグル
    '-' キーは「カレント」ウィンドウのタスク表示を On または Off にする。 On の場合、このタスクエリアは 'f' と 'o' コマンドで確定した 最小限のカラムヘッダしか表示しない。 またこのタスクエリアは、ユーザーが 0 個以上のタスクに対して適用した 他のタスクエリアのオプション/トグルも反映する。 '_' キーは同じことを全てのタスク表示に対して行う。 一方、このキーは現在表示されているタスク表示と ユーザーがトグルを Off にしたタスク表示を切り替える。 4 つのタスク表示が現在全て表示されている場合、 この対話的コマンドはサマリーエリアのみを表示される要素として残す。
* '=' と '+' :ウィンドウの均等化 (バランスの取り直し)
    '=' キーは「カレント」ウィンドウのタスク表示を表示させる。 このキーは有効になっている 'i' (アイドルタスク) と 'n' (最大タスク数) コマンドを無効にする。 '+' キーは同じことを全てのウィンドウに対して行う。 4 つのタスク表示は再度表示され、均等にバランスがとられる。 タスク表示には、ユーザーが以前に適用したカスタマイズも保持される。 ただし、'i' (アイドルタスク) と 'n' (最大タスク数) コマンドは除く。
* 'A' :別形式の表示モードのトグル
    このコマンドはフルスクリーンモードと別形式の表示モードを切り替える。 このコマンドを初めて発行すると、4 つのタスク表示が全て表示される。 その後、モードを切り替えると、表示対象として選んだタスク表示のみが表示される。
* 'a' と 'w' :次のウィンドウを前方/後方へ進める
    これらのキーは「カレント」ウィンドウを変更する。 コマンドが送られるウィンドウを順番に変更する。 これらのキーは巡回する形式で動作するので、 どちらのキーを使っても希望する 「カレント」ウィンドウ へ辿り着ける。 ウインドウ名が表示されている ('l' のトグルを Off にしていない) 場合に、 「カレント」ウィンドウの名前が強調/色付き表示されていないときは、 タスク表示 が Off で多くのコマンドが制限されていることを知らせている。
* 'G' :他のウィンドウ/フィールドグループの選択
    1 から 4 まで数字を入力するプロンプトが出される。 この数字は「カレント」ウィンドウに設定するウィンドウ/フィールドグループを表す。 フルスクリーンモードでは、このコマンドは「カレント」ウィンドウを変更するのに必須である。 別形式の表示モードでは、'a' と 'w' コマンドに比べてあまり便利ではない、 単なる代替コマンドである。
'g' :ウィンドウ/フィールドグループ名の変更
    「カレント」ウィンドウに適用する新しい名前を入力するプロンプトが出される。 ウィンドウ名が表示されている ('l' のトグルが On になっている) 必要はない。
*   アスタリスク ('*')が付いた対話的コマンドは、別形式の表示モード以外でも使われる。
        '=', 'A', 'G' 常に利用可能である。
        'a', 'w' カラーマッピングのときと同じ動作をする。

5. ファイル

  5a. システムの設定ファイル
このファイルが存在すると、どのバージョンの「ヘルプ」スクリーンが 通常のユーザーに表示されるかに影響を与える。 より重要なのは、top の実行中に通常のユーザーに許可されることを、 このファイルで制限できることである。 通常のユーザーは以下のコマンドを発行できる。
   k タスクを kill する。
   r タスクを renice する。
   d または s 遅延時間/スリープの間隔を変更する。 システムの設定ファイルはtopによって作成されない。 逆に、ユーザーがこのファイルを手動で作成し、/etc ディレクトリに置く。 このファイル名は 'toprc' でなければならず、 先頭に '.' (ピリオド) が付いてはならない。 このファイルには 2 行だけしか書かれていてはならない。 以下に /etc/toprc の内容の例を示す:
   s # 1 行目: 「セキュア」モードのスイッチ
   5.0 # 2 行目: 「遅延」間隔 (秒単位)

  5b. 個人の設定ファイル
このファイルは '$HOME/.top に付けた名前' + 'rc' として書き出される。 対話的コマンド 'W' で、このファイルを作成または更新できる。 以下に一般的なレイアウトを示す:
   グローバル # 1 行目: プログラム名/エイリアス、メモ
       " # 2 行目: id,altscr,irixps,delay,curwin
   ウィンドウ毎 # 行 a : ウィンドウ名,fieldscur
       " # 行 b : winflags,sortindx,maxtasks
       " # 行 c : summclr,msgsclr,headclr,taskclr 環境変数 $HOME が存在しない場合、 top は個人の設定ファイルをカレントディレクトリに書き込もうとする。 ただしカレントディレクトリの権限に従う。

6. くだらないトリックのサンプル
これらの「トリック」の多くは、ユーザーが top の スケジューリングを向上させた場合に、最もうまく動作する。 ここでは top を nice 値 -10 で開始するため、 ユーザーが権限を持っていると仮定している。

  6a. カーネルのマジック
これらのくだらないトリックでは、top がフルスクリーンモードになっている必要がある。 ユーザーインタフェース (プロンプトからヘルプまで) では、 意図的に遅延間隔が 1/10 秒までに制限されている。 しかしユーザーは希望する遅延時間を自由に設定できる。 Linux が top に対して最も良いスケジューリングを行うのを見たいなら、 遅延時間を 0.09 秒以下にすればよい。 この実験では、X Window System で xterm をオープンして最大化する。 その後、以下を実行する:
  . スケジューリングを向上させ、遅延時間を短くする:
      nice -n -10 top -d.09
  . ソートされるカラムのハイライトを Off にし、
    パスの長さを最小化する。
  . 行の反転によるハイライトを On にして、強調する。
  . いろいろなソートカラム (TIME/MEM がうまく動作する) と
    正順・逆順のソートを試し、最もアクティブなプロセスが
    ビューに入るようにする。 Linux がユーザーのために常に動作し、 とても忙しくしているのが分かるだろう。 しかしこれを説明できるプログラムはなかった。 xterm で「黒地に白」を使い、top のタスクの色を黒に設定し、 タスクのハイライトを反転でなく太字になっていることを確認して欲しい。 そして遅延間隔を 0.3 秒程度に設定する。 最もアクティブなプロセスがビューに入った後で、 現在実行中のタスクがゴーストのようなイメージとして見えるだろう。 既存のリソースファイルを削除するか、新しいシンボリックリンクを作成する。 この新しいバージョンを起動し、'T' (隠しキー 3c. タスクエリアコマンド、 ソートの話題を参照すること) を入力し、続いて 'W' と 'q' を入力する。 最後に、プログラムを -d0 (遅延時間 0) で再度起動する。 この表示は前の top より 3 倍の割合で更新され、300% スピードアップする。 top は TIME で上位に上がってくるので、 top が最上位に到達するのに投資している間は、忍耐強く待って欲しい。

  6b. バウンドするウィンドウ
これらのくだらないトリックでは、top が別形式の表示モードになっている必要がある。 3 個または 4 個のタスク表示で表示されているときに、 最後のウィンドウ以外を選択し、アイドルプロセスを Off にする。 'i' を適用しているかによって、いくつかのタスク表示がときどきバウンドし、 アコーディオンのようになる。 これは top がスペースを確保するのに最善を尽くしているためである。 各ウィンドウのサマリー行を別々に設定する: メモリ使用量の表示なし・状態表示なし・何も表示しない・メッセージ行のみ。 そして 'a' または 'w' を押し続けると、バウンドするウィンドウの別バージョン -- 跳ね上がるウインドウが見られる。 4 つのウィンドウ全てを表示し、 各ウィンドウでアイドルプロセスの表示を Off にする。 そうすると「非常にバウンドする」ゾーンに入るだろう。

  6c. 大きな雛鳥のようなウィンドウ
このくだらないトリックでも別形式の表示モードが必要である。 4 つのウィンドウ全てを表示し、1:Def が「カレント」ウィンドウになっているのを確認する。 そして他の全てのタスク表示が「巣から押し出される」まで、 ウィンドウサイズを大きくし続ける。 他のウィンドウがすべて置き換えられたら、 全ての表示/非表示ウィンドウをトグルする。 そして以下の言葉について良く考えてみよう:
   top は嘘をついているのか、ユーザーが強要した
   真実を正直に言っているのか?

7. バグ
バグ報告は以下に送って欲しい:
   Albert D. Cahalan, <albert@users.sf.net>

8. 以前の top の履歴
オリジナルの top は、Branko Lankester <lankeste@fwi.uva.nl> の ps プログラムを元にして Roger Binns が書いた。 Robert Nation <nation@rocket.sanders.lockheed.com> は これを proc ファイルシステムに適合させた。 Helmut Geyer <Helmut.Geyer@iwr.uni-heidelberg.de> は 設定可能フィールドのサポートを追加した。 その他にも多くの人々が長年に渡って貢献してきた。

9. 著者
この全く新しく拡張された top の置き換え版は
   Jim / James C. Warner, <warnerjc@worldnet.att.net> によって書かれた。 以下の方々からは、計り知れない助けをしてもらった:
   Albert D. Cahalan, <albert@users.sf.net>
   Craig Small, <csmall@small.dropbear.id.au>

10. 関連項目
free(1), ps(1), uptime(1), atop(1), slabtop(1), vmstat(8), w(1).