Shoeisha Technology Media

CodeZine(コードジン)

記事種別から探す

top

CPUをたくさん使っているプロセスを表示する
2015/05/20 08:00

対応OS: linux , freebsd, solaris
top [-] [d delay] [p pid] [q] [c] [C] [S] [s] [i] [n iter] [b]

 topコマンドは、CPUをたくさん使っている順に、システムのプロセスを一定間隔で表示します。またプロセスを操作するための対話的なインターフェースがあり、結果を、CPUの使用度、メモリの使用量、実行時間などでソートしたりすることができます。

 topコマンドは、デフォルトの設定を「/etc/toprc」と「~/.toprc」の2つのファイルから読み込みます。

 また、Solarisではtopコマンドが標準で入っていませんので、prstatコマンドを使用します。

オプション
① d delay
画面を更新する間隔(秒)を「delay」に指定します。実行後は、対話コマンド「s」で変更することができます。デフォルトの更新間隔は5秒です。
② p pid
「pid」に指定したプロセスIDのプロセスのみを監視します。このフラグは20回まで指定することができます。
③ q
遅延時間なしで更新を続けます。スーパーユーザ特権を持って実行すると、最高の優先度で実行します。
④ c
コマンド名だけでなく、コマンドラインを表示します。
⑤ C
各々のCPUの状態だけでなく全体のCPUの統計も表示します。SMP(CPUを複数搭載した)システムにのみ有効です。
⑥ S
累積モードを有効にします。死んだ子プロセスの分も含めて、利用したCPU時間とともに表示します。
⑦ s
セキュアモードで実行して、潜在的に危険な対話的コマンドの実行を禁止します。
⑧ i
アイドルプロセスやゾンビプロセスを無視します。
⑨ n iter
更新回数を「iter」に指定します。指定した回数だけ表示を更新して終了します。
⑩ b
バッチモードを指定します。出力を他のプログラムやファイルに送る時に使用します。この時topコマンドはコマンドライン入力を受け付けません。オプション「n」で指定した回数だけ表示を繰り返すか、[Ctrl]+[C]キーを押すことなどによって中断されるまで実行を続けます。
HINT!

 topコマンドの実行中には、いくつかの対話コマンドを使用できます。これらについては、巻末にまとめていますので、そちらをご覧ください

topコマンドを実行する
$ top 
10:27pm up 5:53, 6 users, load average: 1.82, 1.44, 1.27 ①
125 processes: 120 sleeping, 4 running, 1 zombie, 0 stopped ②
CPU states: 35.2% user, 14.3% system, 7.4% nice, 42.9% idle ③
Mem: 772468K av, 679768K used, 92700K free, 0K shrd, 110868K buff ④
Swap: 875500K av, 0K used, 875500K free 338988K cached ⑤
PID USER PRI NI SIZE RSS SHARE STAT %CPU %MEM TIME COMMAND
1350 cmd 15 0 13660 13M 2756 S 47.2 1.7 68:38 Xvnc
(略)
250 root 15 0 0 0 0 SW 0.0 0.0 0:00 knodemgrd ⑥

 各フィールドについてまとめると以下のようになります。

 ① uptime

 システムが起動してからの経過時間と、システムの負荷平均(load average)を表示します。システムの負荷平均は、実行待ちの状態にあるプロセスの、最近1分間、5分間、15分間の平均です。

 ② processes

 最後の更新時に実行中だったプロセスの総数を表示します。また、実行状態(running)、スリープ状態(sleeping)、ゾンビ状態(zombie)、停止状態(stopped)のプロセス数をそれぞれ表示します。

 ③ CPU states

 CPUの負荷率を、以下のプロセス状態に分けて表示します。

 User :ユーザモードのプロセス

 System :システムモードのプロセス

 nice :nice値が負のプロセス

 idol :アイドルプロセス

 なお、nice値が負のプロセスのCPU使用時間は、ユーザモードやシステムモードの時間としてもカウントされるので、これらの総計は100%より大きくなります。

 ④ Mem

 メモリの利用統計を表示します。利用できるメモリの総量、利用中のメモリ、空きメモリ、共有メモリ、バッファに用いられているメモリを、それぞれ表示します。

 ⑤ Swap

 スワップ空間の統計を表示します。スワップ空間の総量、利用されているスワップ空間の量、利用可能なスワップ空間の量、キャッシュの量をそれぞれ表示します。

 ⑥ 各列に表示される内容について、表にまとめると以下のようになります。

プロセス状態表示項目一覧
PIDプロセスIDを表示する
PPID親プロセスIDを表示する
UID所有者のユーザIDを表示する
USER所有者のユーザ名を表示する
PRI優先度を表示する
NI優先度をnice値で表示する。小さな値ほど優先度が高い
SIZE「コード+データ+スタック」のサイズをキロバイト単位で表示する
TSIZEコードサイズを表示する。カーネルプロセスおよびELFプロセスに対しては動作しない
DSIZE「データ+スタック」のサイズを表示する。ELFプロセスに対しては動作しない
TRSテキスト常駐サイズを表示する
SWAPスワップアウトされた部分のサイズを表示する
Ddirtyマークされたページのサイズを表示する
LC最後に利用されたプロセッサを表示する
RSSプロセスが用いている物理メモリの総量をキロバイト単位で表示する。ELFプロセスが用いているライブラリのページは計上するが、a.outプロセスでは計上しない
SHAREプロセスが利用している共有メモリの量を表示する
STAT プロセスの状態を表示する。状態は以下のとおりである
S …… スリープ状態 T …… 停止中または/トレース中
D …… 割り込み不可能なスリープ状態 < …… 負のnice値を持つプロセス
R …… 実行中 N …… 正のnice値を持つプロセス
Z …… ゾンビ W …… スワップアウトされたプロセス
WCHANプロセスがスリープしているカーネル関数を表示する
WCHAN「/boot/psdatabase」またはカーネルのリンクマップ「/boot/System.map」があれば名前を、なければアドレスを表示
%CPU最後に画面が更新されて以降、プロセスがCPUを占有していた割合を、プロセッサひとつあたりの時間に対するパーセンテージで表示する
%MEMプロセスの物理メモリの占有量を表示する
TIMEプロセスが起動してから利用したCPU時間の総計を表示する。累積モードが有効な場合、既に死んだ子プロセスが使ったCPU時間も含まれる。また、累積モードが有効な場合は、ヘッダ行が「CTIME」となる
COMMANDプロセスのコマンド名を表示する。一行におさまらない場合は一部の表示となる。また、メモリにあるプロセスはコマンドライン全体が表示されるが、スワップアウトされたプロセスは、名前だけをかっこで囲んで表示する

関連タグ

UNIXコマンド辞典トップページに戻る

All contents copyright © 2005-2017 Shoeisha Co., Ltd. All rights reserved. ver.1.5