topコマンドの使い方

Linux サーバの稼動状況を把握するには、 top コマンドを使用します。このコマンドは、 Linux サーバの稼動状況をタイムリーに表示してくれるので、逐次稼動状況を確認するのには何かと便利なコマンドです。

スポンサーリンク

バージョンの確認

パージョンによって少し挙動が変わります。バージョンの確認方法は下記のように実行時にオプションをつけて実行します。

top -v
  procps-ng version 3.3.9

以降の内容は、バージョン 3.3.9 での挙動となります。ほとんどのディストリビューションがこのバージョンだと思われます。

ヘッダー部1行目の表示

top - 10:47:43 up 83 days,  1:35,  1 user,  load average: 0.26, 0.45, 0.49

稼働時間等の情報を表示しています。各項目の内容は次のとおり。

10:47:43 現在時間
up 83 days, 1:35 稼働時間(83日と1時間35分間稼働中)
1 user ログインユーザ数
load average: 0.26, 0.45, 0.49 直近1分間、5分間、15分間の実行待ちジョブ数

ヘッダー部2行目の表示

Tasks:  65 total,   1 running,  64 sleeping,   0 stopped,   0 zombie

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

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

ヘッダー部3行目の表示

Cpu(s):  1.0% us,  0.3% sy,  0.0% ni, 98.7% id,  0.0% wa,  0.0% hi,  0.0% si

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

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

ヘッダー部4行目の表示

KiB Mem:    127240k total,   124732k used,     2508k free,     2644k buffers

物理メモリの使用状況についての情報を表示しています。各項目の内容は次のとおり。

total メモリ合計量
used 使用中のメモリ量
free 未使用のメモリ量
buffers バッファに使用されているメモリ量

ヘッダー部5行目の表示

KiB Swap:  1028152k total,   169640k used,   858512k free,    19112k cached

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

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

プロセス一覧部の表示

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND

実行中のタクス(プロセス)の詳細を表示しています。各項目の内容は次のとおり。

PID プロセス識別番号
USER プロセスを実行しているユーザ
PR 優先度(値が小さいほうが優先度は高い)
NI 相対的優先度(-20(最高)から19(最低)までで優先度を表示)
VIRT プロセスの仮想メモリサイズ(スワップアウトしたメモリ使用量を加えたメモリ量)
RES プロセスが使用している物理(スワップされていない)メモリサイズ
SHR プロセスが使用している共有メモリ
S プロセスの状態(状態の詳細については下記表を参照)
%CPU CPU使用率
%MEM 実メモリ使用率
TIME+ プロセスの実行時間(秒)
COMMAND 現在実行中のコマンド名
プロセスの状態
S スリープ状態
T 停止中
D 割り込み不可(sleep)
N ナイス値がプラスの状態
< ナイス値がマイナスの状態
R 実行中
Z ゾンビ状態
W スワップアウト状態

表示を更新する間隔の変更

top コマンドは、一定の時間ごとに表示内容を更新するのですがデフォルトでは3秒に設定されています。この間隔を変更することができます。

起動時に変更して起動する方法

起動時にオプションを伴って実行します。

top -d 更新間隔(秒)

起動後に変更する方法

top コマンド実行後、起動中でも変更できます。キーボードで「d」または「s」を押下するとヘッダー部と一覧部の間に下記が表示されるので更新間隔を秒単位で入力します。

Change delay from 3.0 to

COMMAND 部分の表示を詳細な表示に変更

top コマンドの COMMAND に表示される内容はデフォルトでは実行されているコマンドだけを表示するのですが実行時の詳細(実行時のコマンドのフルパスや引数など)を表示することができます。

起動時に変更して起動する方法

起動時にオプションを伴って実行します。

top -c

起動後に変更する方法

top コマンド実行後、起動中でも変更できます。キーボードで「c」を押下する。

実行例

表示の違いを見るためにtopコマンドをわざわざフルパスでしかもオプション「-c」をつけて実行してみると下記のように表示されます。

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
11610 eiichi    20   0    4748   2592   2148 R   0.7  0.3   0:00.07 /usr/bin/top -c

ここでキーボードで「c」を入力すると表示が変わります。

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
11610 eiichi    20   0    4748   2592   2148 R   0.7  0.3   0:01.07 top

プロセスをソートする方法

表示されているプロセスをソートする項目を選ぶことができます。

CPU Shift + p
PID Shift + n
メモリー Shift + m
実行時間 Shift + t

これらとは別にキーボードで「Shift + <」や「Shift + >」を押下することでソートの基準とする項目を選択することができます。また、ソートの並び順を変更する場合には、「Shift + r」を押せば、昇順・降順が変更できます。

ソートされた列を強調表示する方法

ソートする列を強調表示するにはキーボードで「x」を押下します。ソートの基準列が太字で表示されます。更に強調したい場合には、背景色をつけることができます。キーボードで「b」押下します。背景色は先に太字(「x」を押下)してからでないと強調されないので注意が必要です。

フィルターの設定

フィルタを設定して表示するプロセスを選択することができます。キーボードで「o」または「O」を入力します。下記のように表示されフィルタの入力が可能になります。

add filter #1 (ignoring case) as: [!]FLD?VAL

たとえば、COMMANDフィールドに特定の文字「java」を含んでいるものでフィルターを作る場合は「COMMAND=java」と入力します。CPUを使用しているプロセスをフィルタリングする場合には「%CPU>0.0」のように設定します。除外するフィルタも設定できます。「!COMMAND=java」とすれば、javaの文字を含まないプロセスのフィルタを作ることができます。

最初にフィルタを設定する時には、「#1」と表示され1つ目のフィルタであることを示しています。この部分が「#3」のようになっているとすでに2つフィルタが設定されていて3つ目のフィルタを設定しますという意味になります。フィルタはand(論理積)となるので追加するほど表示するプロセスを絞ることができます。

すでに設定されているフィルタを確認するにはキーボードで「Ctrl + o」を入力することで確認できます。フィルタを削除するときは「=」を入力するとすべてのフィルタが削除されます。

プロセスを終了させる方法

キーボードで「k」を入力するとプロセスIDを入力してkillコマンド実行することができます。下記が表示されるので停止するプロセスID(PID)を入力後「Enter」を押します。取り消したい時には「Esc」を押します。PIDを入力せずに「Enter」を押すとデフォルトで表示されているPIDのプロセスが停止するので注意が必要です。

PID to signal/kill [default pid = 4312]
スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク