名前
top - CPU をたくさん使っているプロセスを表示する
書式
top [-] [d delay] [p pid] [q] [c] [C] [S] [s] [i] [n iter] [b]
説明
top は実時間でプロセッサの活動の推移を見るためのものである。 top はシス
テムのタスクを CPU をたくさん使っている順にリストする。またプロセスを操
作 す るための対話的なインターフェースも持っている。タスクは CPU の使用
度、メモリの使用量、実行時間などでソートできる。
この top は、普通のものに比べてより設定が柔軟に行える。様々な機能が、対
話的なコマンドや、個人/システムの設定ファイルによって指定できる。詳しく
は以下を見てほしい。
コマンドラインオプション
d スクリーンを更新する間隔を指定する。これは対話コマンド s を用い れ
ば変更できる。
p 指定されたプロセス ID のプロセスのみを監視する。このフラグは 20 回
まで指定できる。このオプションは対話的には指定できず、設定ファイル
にも書けない。
q こ れ を指定すると top は遅延時間無しで更新を続ける。呼び出し元が
スーパーユーザー特権を持っていると、 top は可能な最高の優先度で 実
行される。
S 累積モードを指定する。各プロセスが、死んだ子プロセスの分も含めて利
用した CPU 時間とともにリストされる。 ps(1) の -S フラグと似た動作
をする。以下の、対話的コマンド S に関する議論も参照のこと。
s top をセキュアモードで動作させる。このモードでは、潜在的に危険な対
話的コマンドの実行を禁止する (以下を見よ)。セキュアな top は、空い
た端末で走らせたままにしておいても全く問題ない。
i top に idle なプロセスやゾンビプロセスを無視させる。以下の対話的コ
マンド i も参照。
C 各々の CPU の状態だけでなく全体の CPU の統計も表示する。この オ プ
ションは SMP システムにしか影響しない。
c コマンド名だけでなく、コマンドラインを表示する。コマンド名だけの方
が便利なようなので、デフォルトの動作はこちらに変更された。
n 繰り返しの回数。この回数だけ表示を更新して、終了する。
b バッチモード。出力を top から他のプログラムやファイルに送るとき に
便 利。このモードでは、 top はコマンドライン入力を受けつけない。 n
オプションで指定された回数だけ表示を繰り返すか、 kill されるまで実
行を続ける。出力はダム端末向けのプレインテキストになる。
フィールドの説明
top はプロセッサの状態に関する様々な状態を表示する。デフォルトでは表示
は 5 秒おきに更新されるが、この間隔はコマンドラインオプション d また は
対話的コマンド s で変更できる。
uptime
こ の行は、システムが起動してからの経過時間と、システムの 3 種類の
負荷平均 (load average) を表示する。後者は実行待ちの状態にあるプロ
セ スの、最近 1, 5, 15 分間の平均数である。この行は uptime(1) の出
力ととてもよく似ている。 uptime 表示は対話的コマンド l によって ト
グルできる。
processes
最 後 の更新時に実行中だったプロセスの総数。さらに、実行状態 (run-
ning)・スリープ状態 (sleeping)・ゾンビ状態 (zombie)・ 停 止 状 態
(stopped) に あるプロセスの数もそれぞれ表示される。 processes と
CPU states の表示は対話的コマンド t によってトグルできる。
CPU states
CPU が、ユーザーモード・システムモード・nice されたタスク の 実 行
中・ ア イ ド ル状態、それぞれにある時間をパーセンテージで表示する
(nice されたタスクは nice 値が負のもののみ)。 nice されたタスク で
費やされた時間は、システムモードやユーザーモードの時間としてもカウ
ントされるので、これらの総計は 100% より大きくなる。 processes と
CPU states の表示は対話的コマンド t によってトグルできる。
Mem メモリの利用統計。利用できるメモリの総量・空きメモリ・利用中のメモ
リ・共有メモリ・バッファに用いられているメモリ。メモリ情報の表示は
対話的コマンド m によってトグルできる。
Swap ス ワップ空間の統計。スワップ空間の総量・利用可能なスワップ空間の
量・利用されているスワップ空間の量。これと Mem の表示は free(1) の
出力ととてもよく似ている。
PID タスクのプロセス ID。
PPID タスクの親プロセス ID。
UID タスクの所有者のユーザー ID。
USER タスクの所有者のユーザー名。
PRI タスクの優先度。
NI タスクの nice 値。負の値が高い優先度を意味する。
SIZE タスクの「コード+データ+スタック」のサイズ。キロバイト単位。
TSIZE
タスクのコードサイズ。カーネルプロセスについては変な値になり、 ELF
プロセスに対しては動作しない。
DSIZE
「データ+スタック」のサイズ。 ELF プロセスに対しては動作しない。
TRS テキスト常駐サイズ。
SWAP そのタスクの、スワップアウトされた部分のサイズ。
D dirty マークされたページのサイズ。
LC 最後に利用されたプロセッサ。 (これが時々変更するのはバグではない。
Linux はわざと weak affinity を使っているからである。また実行中の
top の動作そのものが CPU 時間に対する余分な要求となることによって
weak affinity を壊すかもしれず、プロセスのカレント CPU の変更がよ
り多くなるかもしれない。)
RSS タスクの用いている物理メモリの総量。キロバイト単位。 ELF プロセス
の用いているライブラリのページは勘定に入るが、 a.out プロセスで は
入らない。
SHARE
タスクが利用している共有メモリの量がこのカラムに表示される。
STAT このタスクの状態。状態は以下のいずれか。 S スリープ状態・ D 割り込
み不可能なスリープ状態・ R 実行中・ Z ゾンビ・ T 停止された/トレー
ス 中。これらの後にさらに文字が続くこともある。 < 負の nice 値を持
つプロセス・ N 正の nice 値を持つプロセス・ W スワップアウトされた
プロセス (カーネルプロセスに対しては正しく動作しない)。
WCHAN
タ ス ク が ス リー プ し て い る カー ネ ル 関 数 が表示される。
/boot/psdatabase またはカーネルのリンクマップ /boot/System.map が
あれば名前が、なければアドレスが表示される。
TIME タ ス クが起動してから利用した CPU 時間の総計。累積モードがオンに
なっていると、プロセスの既に死んだ子どもが使った CPU 時間もここ に
含 まれる。累積モードはコマンドラインオプション S で有効になり、ま
た対話的コマンド S によってトグルできる。累積モードの時は、ヘッ ダ
行が CTIME に変わる。
%CPU 最 後 にスクリーンが更新されて以降、タスクが CPU を占有していた割
合。プロセッサひとつ辺りの時間に対するパーセンテージで表示される。
%MEM タスクの物理メモリの占有量。
COMMAND
タスクのコマンド名。一行に収まらない場合は切り詰められる。メモリに
あるタスクはコマンドライン全体が表示されるが、スワップアウトされた
タスクは、名前だけが括弧で括られて表示される (例: "(getty)")。
A , WP
これらの kmem top からのフィールドはサポートされていない。
対話的コマンド
top は実行時に、いくつかのワンキーコマンドを受付ける。コマンドラインで
s オプションが指定された場合は、これらのいくつかは使えなくなる。
space
すぐに表示を更新する。
^L スクリーンを消去して再描画する。
h または ?
ヘルプ画面を表示する。コマンドの簡単なまとめと、セキュアモード・累
積モードかどうかの状態が表示される。
k プロセスを kill する。プロンプトが出るので、対象タスクの PID とそ
れに送るシグナルを指定する。通常の kill にはシグナル 15 を送る。確
実に (しかしやや唐突に) kill するにはシグナル 9 を送る。デフォルト
のシグナルは、 kill(1) と同じく 15 の SIGTERM である。このコマンド
はセキュアモードでは使えない。
i idle なプロセスとゾンビプロセスを無視する。これはトグルスイッチに
なっている。
I Solaris ビュー (CPU パーセンテージが CPU の個数で割り算される) と
Irix ビュー (CPU パーセンテージが単に時間に対するものになる) とを
切替える。
n or #
表示するプロセスの数を変更する。プロンプトが出るので、数を入 力 す
る。画面サイズによって自動的に決定される表示プロセス数を変更する。
0 を指定すると、top は画面に収まる限り、できるだけ多くのプロセスを
表示しようとする。これがデフォルトである。
q 終了する。
r プロセスを renice する。プロンプトが出るので、対象タスクの PID と
それに設定する nice の値を表示する。正の値を入力するとプロセ ス の
nice 値は減少し、優先度が低くなる。 root が top を実行している場合
は、負の値を入力すれば、プロセスは通常よりも高い優先度を獲得 で き
る。 デ フォ ルトの renice 値は 10。である。このコマンドはセキュア
モードでは使えない。
S 累積モードをトグルする。 ps -S と等価。すなわち、CPU 時間にプロ セ
ス の (既に死んだ) 子プロセスの分を加える。プログラムによっては、
フォークしてたくさんのタスクを分離することがある (例えばコン パ イ
ラ)。 ノーマルモードでは、このようなプログラムが実際よりも少ない資
源で動作しているようにみえる。しかし逆に、シェルや init などに対し
ては、ノーマルのほうが正しい動作である。いずれにせよ、累積モードを
試してみて、別の見方で CPU 利用率を見てみるとよい。
s 更新の間隔を変更する。プロンプトが出るので、更新の時間間隔を秒数で
入 力する。小数値もマイクロ秒の桁まで認識される。 0 を入力すると連
続更新となる。デフォルトの値は 5 秒。低い値を入れると表示は読め な
いほど速くなり、負荷が非常に上昇する。このコマンドはセキュアモード
では使えない。
f または F
表示するフィールドを追加・削除する。詳細は以下を見よ。
o または O
表示するフィールドの順序を変更する。詳細は以下を見よ。
l 負荷平均・uptime 情報表示のトグル。
m メモリ情報表示のトグル。
t プロセスと CPU 状態の情報表示のトグル。
c コマンド名 (コマンドライン全体) の表示のトグル。
N タスクを pid の (数値的な) 順に並べる。
A タスクを年齢順 (新しい順) に並べる。
P タスクを CPU 利用率の順に並べる (デフォルト)。
M タスクを常駐メモリの利用量の順に並べる。
T タスクを時間/累積時間の順に並べる。
W 現在の設定を ~/.toprc に書く。 top の設定ファイルを書くにはこの 方
法を用いるのがよい。
フィールド画面・順序指定画面
f, F, o, O を押すと画面が切り替わり、最上行でフィールドの順序が、残りの
部分でフィールドの内容に関する短い説明が表示される。フィールド順序の 指
定 文字列は、次のような文法に従う: あるフィールドに対応している文字が文
字列中で大文字のときは、そのフィールドは表示される。この場合、 さ ら に
フィールドの説明の前にアスタリスク (*) がつけられる。フィールドの順番は
文字列中の文字の順番に対応する。フィールド選択画面では、フィールドを 表
示 するかどうかを、対応する文字を押すことでトグルできる。順序指定画面で
は、フィールドに対応する文字の大文字を押せばそのフィールドが左 に 移 動
し、小文字を押せば右に移動する。
設定ファイル
top はデフォルトの設定を 2 つのファイル (/etc/toprc と ~/.toprc) から読
み込む。グローバルな設定ファイルは、特権のないユーザーに対して top の利
用 をセキュアモードに制限するような用途に利用できる。このようにしたい場
合は、セキュアモード指定の 's' とデフォルトの更新間隔の数字 d (2<=d<=9:
秒単位) とを 1 行にして、このファイルに書いておく。個人の設定ファイルは
2 行からなる。 1 行目は大文字・小文字の英文字からなり、どのフィールドを
どんな順序で表示するかを指定する。各文字は top のフィールド画面と順序指
定画面での文字に対応する。これはあまり直感的ではないので、フィールド の
選 択と並べ替えは top を実行して行い、対話的コマンド W を用いて設定を保
存すると良い。二行目はよりおもしろい (そして重要である)。ここには他のオ
プ ションの情報が入る。最重要な注意。設定ファイルをセキュアモードで保存
すると、 ~/.toprc の二行目から 's' を消さない限り、セキュアでな い top
は 実行できなくなる。数字は更新の時間間隔を表し、'S' は累積モードを、小
文字の 'i' は非アイドルモードを、大文字の 'I' は Irix ビューをそれぞ れ
表す。対話的モードの各コマンドと同様、小文字の 'm', 'l', 't' を指定する
と、それぞれメモリ・uptime・プロセスと CPU 状態を表示しなくなる。今のと
ころは、ソート順をデフォルト (CPU 利用度) から変更することはできない。
注意
こ の proc ベースの top は、 /proc にマウントされた proc ファイルシステ
ムのファイルを読み込んで動作する。 /proc がマウントされていないと、 top
は動作しない。
%CPU は更新の間での cpu 時間/実時間のパーセンテージを表示する。最初の更
新の時には、適当な短い時間が用いられるので、 top 自身の CPU 利用度が 大
き くなる。その後は top は下の方に落ち、 CPU の利用統計がより信頼できる
かたちで表示される。
SIZE フィールドと RSS フィールドは プ ロ セ ス の ペー ジ テー ブ ル や
task_struct を考慮しない。これはメモリに常駐し、最低でも常に 12K のメモ
リを消費する。 SIZE はプロセスの仮想サイズ (code+data+stack) である。
累積モードにおいて、プロセスの時間が親に足されるためには、そのプロセ ス
が 死ななければならないことに注意。各プロセスを上に辿って時間を加えてい
くほうがおそらく便利な動作ではあろうが、これは高く (おそらくあまりに も
高く) つきすぎるだろう。いずれにせよ、これによって top の動作は ps とは
互換性がなくなっている。
ファイル
/etc/toprc グローバルな設定ファイル
~/.toprc 個人の設定ファイル
関連項目
ps(1), free(1), uptime(1), kill(1), renice(1).
バグ
端末ウィンドウが 70x7 程度より小さいと、 top は情報を正しく整形で き な
い。 ELF プロセスに対しては、多くのフィールドがまだ問題を抱えている。
25 行以下の端末ウィンドウに対してはヘルプスクリーンがまだ最適化されてい
ない。
著者
オ リジナルの top は、Branko Lankester <lankeste@fwi.uva.nl> の ps プロ
グ ラ ム を 元 に し て Roger Binns が 書 い た。 Robert Nation
<nation@rocket.sanders.lockheed.com> は、 Michael K. Johnson <john-
sonm@redhat.com> の proc ベースな ps プログラムを元にして、 top を大 幅
に 書き換えた。 Michael Shields <mjshield@nyx.cs.du.edu> は多くの変更を
行い、セキュアモード・累積モードを追加し、全般的な整理を 行っ た。 Tim
Janik <timj@gtk.org> は年齢順ソートと、特定のプロセスを ID を用いて監視
する機能を追加した。
Helmut Geyer <Helmut.Geyer@iwr.uni-heidelberg.de> は大きな変更を行 い、
フィー ルド設定のサポート・新しいオプションの追加・コードの整理・新しい
readproc インターフェースの利用機能の追加を行った。
"b" オプションと "n" オプションは George Bonser <george@captech.com> か
ら CapTech IT Services のために寄贈された。
Michael K. Johnson <johnsonm@redhat.com> が現在のメンテナである。
バグ報告は <procps-bugs@redhat.com> まで送って欲しい。
Linux Feb 1 1993 TOP(1)
最終更新:2008年02月05日 08:49