TOPコマンドを使いこなす!




投稿日:

TOPコマンドは、Linuxのタスク状況を表示させることができるコマンドです。
サーバの状況把握をする場合に使用することが多く、デフォルトで5秒毎に、情報を更新し表示します。
今日はよく使うTOPコマンドの見方をまとめておきたいと思います。
   

まずは、TOPコマンドを実行してみましょう。


[html autolinks=”true”]# TOP[/html]
 
では以下の結果が表示されると思います。
1行目から順番に見て行きましょう。
 
[html autolinks=”true”]
top – 10:48:14 up 4 days, 15:40, 1 user, load average: 0.00, 0.00, 0.00
Tasks: 85 total, 3 running, 82 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 786608k total, 695072k used, 91536k free, 98364k buffers
Swap: 1605624k total, 32k used, 1605592k free, 473472k cached
[/html]
   

1行目


 
[html autolinks=”true”]top – 10:48:14 up 4 days, 15:40,  1 user,  load average: 0.00, 0.00, 0.00[/html]
 

・10:48:14 :現在時間
・up 4 days, 15:40, :稼働時間
・1 user, :ログインユーザ数
・load average: 0.00, 0.00, 0.00:ロードアベレージは、実行待ちジョブの平均数1分前、5分前、15分前 をそれぞれ指します。
 
サーバが重い場合や、障害調査をしているときは、特にロードアベレージのジョブ数が溜まっていないかを確認します。
参照リンクによると、ここに出るジョブは、CPUの処理を待っているものだけではなく、IO処理を待っているものも含まれるのだそうです。よって、ここの待ちジョブ数がある場合は、その原因がCPU側かIO側かの判断をしなくてはいけません。

   

2行目


 

[html autolinks=”true”]Tasks: 85 total, 3 running, 82 sleeping, 0 stopped, 0 zombie
[/html]

 

存在するタスクの状態を表示しています。各項目の内容は次のとおり。 

・total : タスクの合計数
・running : 稼働中のタスク数
・sleeping : 待機中のタスク数
・stopped : 停止タスク数
・zombie : ゾンビタスク数

   

3行目


 

[html autolinks=”true”]Cpu(s): 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st[/html]
 

CPUの利用時間についての情報を占有時間の割合で表示しています。 

us : ユーザプロセスの使用時間
sy : システムプロセスの使用時間
ni : 実行優先度を変更したユーザプロセスの使用時間
id : アイドル状態の時間
wa : I/Oの終了待をしている時間
hi : ハードウェア割込み要求での使用時間
si : ソフトウェア割込み要求での使用時間

   

4行目


 
[html autolinks=”true”]Mem: 786608k total, 695072k used, 91536k free, 98364k buffers
[/html]

 
物理メモリの使用状況についての情報を表示しています。各項目の内容は次のとおり。
 
total : メモリ合計量
used : 使用中のメモリ量
free : 未使用のメモリ量
buffers : バッファに使用されているメモリ量
   

5行目


 
[html autolinks=”true”]Swap: 1605624k total, 32k used, 1605592k free, 473472k cached
[/html] 

スワップ領域の使用状況を表示しています。各項目の内容は次のとおり。 

total : スワップ領域の合計量
used : 使用中のスワップ領域
free : 未使用のスワップ領域
cached : キャッシュされているスワップ領域
   

6行目以下


 
[html autolinks=”true”]
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 15 0 2176 648 552 S 0.0 0.1 0:00.22 init
2 root RT -5 0 0 0 S 0.0 0.0 0:00.00 migration/0
3 root 34 19 0 0 0 S 0.0 0.0 0:00.05 ksoftirqd/0
4 root RT -5 0 0 0 S 0.0 0.0 0:00.00 watchdog/0
5 root 10 -5 0 0 0 S 0.0 0.0 0:00.01 events/0
[/html]

 
実行中のタクス(プロセス)の詳細を表示しています。各項目の内容は次のとおり。
 
PID : プロセス識別番号
USER : プロセスを実行しているユーザ
PR : 優先度
NI : 相対的優先度(-20(最高)縲鰀19(最低))
VIRT: プロセスの仮想メモリサイズ(スワップアウトしたメモリ使用量を加えたメモリ量)
RES : プロセスが使用している物理(スワップされていない)メモリサイズ
SHR : プロセスが使用している共有メモリ
S : プロセスの状態(状態の詳細については*1)
%CPU: CPU使用率
%MEM : 実メモリ使用率
TIME+ : プロセスの実行時間(秒)
COMMAND : 現在実行中のコマンド名
 

*1 プロセスの状態

S(スリープ状態)
T (停止中)
D (割り込み不可(sleep))
N (ナイス値がプラスの状態)
< (ナイス値がマイナスの状態) R (実行中) Z (ゾンビ状態) W (スワップアウト状態) プロセスの状態がどうなっているかは、サーバの状態を見る上で一番有用であり重要な情報です。 特に、zやwのような状態であれば手を打つ必要があるでしょう。 【追加】 プロセスが暴走状態になっている状態では、ゾンビやスワップアウト状態と表示されることはありません。 スリープ状態になっていることが殆どです。    

TOPコマンドのオプション


  

[html autolinks=”true”]# top -d 2[/html]

dオプションで、更新間隔の指定をします。上の場合は2秒で画面更新がされます。
デフォルトは5秒。
  
[html autolinks=”true”]# top -p 17 [/html]

pオプションで、pidの指定をします。17のようにpid番号を指定。
  
[html autolinks=”true”]# top -c[/html]
cオプションは、コマンド名だけでなく、コマンドラインを表示します。
よって、より詳細な実行コマンドがわかります。
  
[html autolinks=”true”]#top -b [/html]
bオプションで、パッチモードになる。他のプロセスの結果を渡せるようになります。

   

TOPの実行結果のソート順変更


 
通常は、CPU使用率でソートされていますが、TOP結果画面で「shift+o」でソート順選択画面に切り替わり、選択が可能です。アルファベットで指定してenter でOK!
 

[html autolinks=”true”]
Current Sort Field: K for window 1:Def
Select sort field via field letter, type any other key to return

a: PID = Process Id
b: PPID = Parent Process Pid
c: RUSER = Real user name
d: UID = User Id
e: USER = User Name
f: GROUP = Group Name
g: TTY = Controlling Tty
h: PR = Priority
i: NI = Nice value
j: P = Last used cpu (SMP)
* K: %CPU = CPU usage
l: TIME = CPU Time
m: TIME+ = CPU Time, hundredths
n: %MEM = Memory usage (RES)
o: VIRT = Virtual Image (kb)
p: SWAP = Swapped size (kb)
q: RES = Resident size (kb)
r: CODE = Code size (kb)
s: DATA = Data+Stack size (kb)
t: SHR = Shared Mem size (kb)
u: nFLT = Page Fault count
v: nDRT = Dirty Pages count
w: S = Process Status
x: COMMAND = Command name/line
y: WCHAN = Sleeping in Function
z: Flags = Task Flags <sched.h>
[/html]

   

情報を非表示にしよう。


 
1~5行目の情報は、表示/非表示の切替が可能です。
トグルキーで実行します。
 
l   時刻からロードアベレージの情報。(1行目)
t   CPU関連の情報。(2~3行目)
m   メモリ関連の情報。(4~5行目)
   

対話コマンドを使おう


 
h   ヘルプ
space  表示を更新する。指定の実行間隔以外で即時に今の状態に変更する。
k   プロセスをkillする。
n   表示するプロセス数を変更する。プロンプトが出るので表示する数を入れる。
q   対話コマンドを終了する。
 
特に、k プロセスのkillは使用する機会が多いかもしれません。
やってみましょう。
 
[html autolinks=”true”]#top[/html]
 
#結果が出たらその画面で、k を押す。
すると、6行目に「PID to kill: 」が表示される。
 
[html autolinks=”true”]
Mem: 786608k total, 695688k used, 90920k free, 98788k buffers
Swap: 1605624k total, 32k used, 1605592k free, 473596k cached
PID to kill:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 15 0 2176 648 552 S 0.0 0.1 0:00.22 init
[/html]

   

TOPの結果をログとして残そう。


 
結果をパッチ処理して残す事も出来る。
[html autolinks=”true”]# top -b -n 5 > temp.txt[/html]
 
更新間隔も一緒に入れよう。
[html autolinks=”true”]# top -b -n 5 -d 1 > temp.txt[/html]

   

参照


 
manページ
 
topコマンドの使い方 – No:124 – Linuxで自宅サーバ構築(新森からの雑記)
http://www.uetyi.mydns.jp/wordpress/command/entry-124.html

 
topコマンドでロードアベレージを見る | b.l0g.jp
http://b.l0g.jp/dev/top-loadaverag/






コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください