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
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:55 | up 1 day, 12:43 | 1 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 | 優先度 | 小さい数値ほど優先度が高い |
NI | nice値 | 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切り替え(ロードアベレージ行) |
t | 2、3行目のタスク数、CPU使用率情報の表示方法切り替え |
m | 4、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 例: o → PID>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
プロセスキルあたりを覚えておけば最低限なんとかなりそう。