topコマンド

概要

topコマンドは、Linuxシステムのパフォーマンス監視ツールの一つである。リアルタイムでシステムのプロセス情報を表示し、CPU使用率やメモリ使用量、プロセスごとの詳細な情報を確認できる。システム負荷が高い場合や、特定のプロセスがリソースを過度に消費している場合の調査に役立つ。

  • リアルタイム監視: プロセス情報は3秒間隔(デフォルト)で更新されるため、システムの状態をリアルタイムに把握できる。
  • インタラクティブ操作: キーボード操作で表示内容をカスタマイズしたり、特定のプロセスに対してアクションを実行したりできる。
top - 17:50:47 up 1 day, 12:20,  1 user,  load average: 0.00, 0.00, 0.00
Tasks:  28 total,   1 running,  27 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
MiB Mem :  15886.4 total,  14945.9 free,    776.9 used,    436.2 buff/cache
MiB Swap:   4096.0 total,   4096.0 free,      0.0 used.  15109.4 avail Mem

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
      1 root      20   0   21860  12892   9488 S   0.0   0.1   0:03.22 systemd
      2 root      20   0    2776   1920   1796 S   0.0   0.0   0:00.01 init-systemd(Ub
      8 root      20   0    2776     68     68 S   0.0   0.0   0:00.00 init
(省略)

解説

基本的な構文

topコマンドの構文は以下の通りである。

top [オプション]

主なオプションを示す。

オプション説明
-d [秒数]更新間隔を指定する。デフォルトは3秒。
-p [PID]特定のプロセスID(PID)のみを監視する。
-u [ユーザー名]特定のユーザーが所有するプロセスのみを表示する。
-n [更新回数]指定した回数だけ更新する。更新が終わったら終了する。
-bインタラクティブモードではなくバッチモードで実行する。
並び替えや操作可能なテーブルを使用しない。
-cプロセスの実行コマンドの引数を表示する。
-o [表示順] プロセスの表示順を指定する。

表示内容

サマリーエリア(ヘッダー部)

topコマンドを実行すると、上部にシステム全体の情報が表示される。

top - 18:13:05 up 1 day, 12:43,  1 user,  load average: 0.00, 0.00, 0.00
Tasks: 28 total, 1 running, 27 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
MiB Mem : 15886.4 total, 14946.4 free, 775.6 used, 436.9 buff/cache
MiB Swap: 4096.0 total, 4096.0 free, 0.0 used. 15110.7 avail Mem

表示されている項目は、以下の通りである。

1行目:システム全体
見出し1番目2番目3番目4番目
top - 18:17:55up 1 day, 12:431 user,load average: 0.00, 0.00, 0.00
実行時刻システムのアップタイムログインユーザ数単位時間あたりの平均待ちタスク数(ロードアベレージ)
左から1分、5分、15分平均
2行目:タスクの数
見出し1番目2番目3番目4番目5番目
Tasks:28 total,1 running,27 sleeping,0 stopped,0 zombie
タスク合計数稼働中の数待機中の数停止中の数ゾンビタスクの数
3行目:CPU使用率
見出し1番目2番目3番目4番目5番目6番目7番目8番目
%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
合計CPU時間に対する使用時間のパーセンテージniceにより実行優先度を変更されていないユーザプロセスが使用システムプロセスが使用niceにより実行優先度を変更されたユーザプロセスが使用CPUを使用していない時間IO待ち時間ハードウェア割り込み処理の時間ソフトウェア割り込み処理の時間CPU割り当て待機の時間(ストール率)

ストール率

ストール率は仮想化環境においてホストマシンが他の仮想マシンにCPUリソースを割り当てているためにCPU割り当てを待機して止まっている時間を表している。

4行目:物理メモリ量
見出し1番目2番目3番目4番目
MiB Mem 15886.4 total,14946.4 free,775.6 used,436.9 buff/cache
物理メモリ量(MiB)合計使用していない使用中バッファ/キャッシュとして使用されている
5行目:スワップメモリ量
見出し1番目2番目3番目4番目
MiB Swap: 4096.0 total,4096.0 free,0.0 used.15110.7 avail Mem
スワップメモリ量(MiB)合計使用していない使用中スワップなしで使用できる

タスクエリア(プロセス情報)

プロセスごとに以下のような情報が表示される。

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
      1 root      20   0   21860  12892   9488 S   0.0   0.1   0:03.30 systemd
列名意味補足
PIDプロセスID
USER実行ユーザー名
PR優先度小さい数値ほど優先度が高い
NInice値PRに影響を与える数値(-20..20)
小さいほど優先度を高く(PR値を小さく)する
VIRT仮想メモリの使用量スワップ領域を含む
RES物理メモリの使用量
SHR他のプロセスと共有できるメモリの使用量
SステータスD(Disk sleep) ディスク待ちなどの割り込み不可なスリープ
R(Running) 実行中
S(Sleeping) スリープ状態
T(sTopped) 停止中
Z(Zombie) ゾンビ状態
など
%CPU前回から今回までに利用したCPU時間の占有率
%MEM物理メモリの使用率
TIME+タスクが開始されてから利用した CPU 時間の総計
COMMANDコマンド名

表示順の指定

oオプションで表示順を指定する。テーブルに表示されている列名を指定すれば良いので覚える必要は無い。デフォルトでは降順になるが、-列名(昇順)、+列名(降順)のように指定できる。

インタラクティブモードでの指定

インタラクティブモードでも表示順を変更できる。

インタラクティブモード

-bオプションを付けないでtopコマンドを実行するとインタラクティブモードとなる。パフォーマンス状態は定期的に更新され、並び替えやフィルタ、詳細確認などの操作が行える。

サマリーエリアの操作

キー意味
l (エル)1行目の表示ON/OFF切り替え(ロードアベレージ行)
t2、3行目のタスク数、CPU使用率情報の表示方法切り替え
m4、5行目のメモリの表示方法切り替え
1 (数字の1)全CPU平均/CPU毎表示を切り替え

タスクエリアの操作

分類キー説明
並び替えx並び替えをしている列の強調 ON/OFF
< or >並び替えをする列を左右に移動する
R並び替えを逆順にする
M (Memory)メモリで並び替える
P (Processor)CPU使用率で並び替える
T (Time)TIME+で並び替える
N (PID Number?)PIDで並び替える
fフィールド管理モードに入る
(列の一覧から選択してsキー)
フィルターiアイドルタスクの表示 ON/OFF
u特定のユーザーのプロセスのみ表示する
o or Oフィルターを設定する。複数設定可能。
o:case insensitive O:case sensitive
例:oPID>1000
Ctrl+oフィルターの表示
=フィルターのクリア
表示b強調表示の切り替え(太字/反転)
y実行中タスクの強調 ON/OFF
zカラー表示 ON/OFF
cコマンドの詳細表示 ON/OFF
詳細表示OFFの例 systemd
詳細表示ONの例 /usr/lib/systemd/systemd --system --deserialize=61
f表示するフィールドを管理するモードに入る
S累積時間モードを切り替える
n表示するタスクの最大数を設定する
Vプロセスツリーの表示
fフィールド設定モードに入る
(列の一覧から選択してdまたはSpaceキー)
操作k特定のプロセスをkillする(プロセスIDとシグナルを指定)
d or s更新間隔を変更する
rナイス値の変更

個人的にはfフィールド管理(並び替え設定も可)、R並び替え逆順、o/=フィルターON/OFF、Vプロセスツリー、kプロセスキルあたりを覚えておけば最低限なんとかなりそう。

コメントを残す

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