【Linux】topコマンド:システムの状態(CPU、メモリなど)を継続的に監視・確認

時計 2022.05.05 / 時計

【Linux】topコマンド:システムの状態(CPU、メモリなど)を継続的に監視・確認

本記事ではLinux系OSで使用できる、topコマンドについて解説していきます。

topコマンドを実行することで、システムの状態(CPUやメモリなど)を継続的に監視・確認することができます。

本記事を通して、実行中のプロセス情報をリアルタイムで確認できるtopコマンドについて理解を深めましょう。

topコマンドとは:システムの監視

稼働しているLinux系OSでシステムのリソースを監視するコマンドの一つにtopコマンドがあります。

topコマンドを実行することでCPUやメモリの使用量(使用率)やシステムの負荷状態といったシステムの状態をリアルタイムで監視できます。

構文

top [オプション]

オプション 説明
-b バッチモードで実行
-n 回数 更新する回数を指定
-d 秒 更新する間隔を指定(秒)
-u ユーザー名 指定したユーザーのプロセスのみ監視

例えば表示の更新間隔を10秒ごとにする場合は以下コマンドを実行します。

$ top -d 10

rootユーザーのプロセスのみを表示したい場合は以下コマンドを実行します。

$ top -u root

実際にtopコマンドを実行すると次図のような表示がされます。終了するには「q」キーを押します。

Linux:topコマンド

上図のようにシステムの情報やプロセスごとの情報が順に表示されます。プロセスの表示順はCPU使用率の高い順でソートされています。

この表示はデフォルトでは3秒ごとに更新されます。更新する周期の変更は「-d」オプションを利用します。

topコマンドで表示される情報については次項より詳しく解説していきます。

1行目:稼働時間と平均負荷(load averageとは)

topコマンドで表示される1行目には、稼働時間と平均負荷の情報が表示されます。

Linux:topコマンドの1行目

top – 現在時刻 起動してからの時間 ログインしているユーザー数 ロードアベレージ

ロードアベレージには左から1, 5, 15分間の実行待ちプロセス数(平均負荷)の平均が表示されます。この数値がCPUのコア数より大きいと負荷が高い状態を意味します。例えば2コアのCPUでロードアベレージの数値が2.00以上であれば、CPUの負荷が高いということです。

1行目で表示される情報は「uptimeコマンド」の表示とほとんど同じです。

2行目:実行プロセス数

topコマンドの2行目には、実行プロセス数について表示されます。

Linux:topコマンドの2行目

Tasks: プロセスの合計, 実行中のプロセス数, スリープ状態のプロセス数, 停止状態のプロセス数, ゾンビ状態のプロセス数

ゾンビ状態とは、プロセス自体は終了しているが、リソースの解放がされていない状態のことです。

3行目:CPUの状態

topコマンドの3行目には、CPUの状態について表示されます。

Linux:topコマンドの3行目
項目 説明
us ユーザープロセスの使用時間
sy システムプロセスの使用時間
ni 実行優先度を変更したユーザープロセスの使用時間
id アイドル状態の時間
wa I/O終了待ちの時間
hi ハードウェア割込み要求での使用時間
si ソフトウェア割り込み要求での使用時間
st 仮想CPUの計算で待たされた時間

4行目:メモリの状態

topコマンドの4行目には、実メモリ(物理メモリ)の状況を表示します。

Linux:topコマンドの4行目

KiB Mem : メモリ合計, 未使用メモリ, 使用中メモリ, バッファキャッシュ/ページキャッシュの割り当てメモリ

Linuxでは空きメモリをキャッシュに割り当て、ディスクアクセスのパフォーマンスを向上させます。

5行目:スワップ領域の使用状況

topコマンドの5行目には、スワップ領域の使用状況が表示されます。

Linux:topコマンドの5行目
IT用語の確認

スワップ領域とはハードディスク内に設置される領域であり、仮想的なメモリとして利用されます

メモリ使用量が物理メモリよりも大きくなるとスワップが利用されます。ハードディスクへのアクセスは遅いため、スワップの利用はパフォーマンスの低下に繋がります。

そのためスワップが頻繁に利用される状況の場合、メモリ増設か不要なサービスの停止を検討してください。

理想的なメモリの状態は、使用中のメモリが物理メモリよりも小さく、キャッシュ(バッファキャッシュ/ページキャッシュ)が確保されており、スワップが利用されていないことです。

6行名以降:各プロセスの状態

topコマンドの6行目以降には、各プロセスの状態が表示されます。

Linux:topコマンドの6行目以降
フィールド 説明
PID タスクのプロセスID
USER 実行ユーザー名
PR タスクの優先度
NI タスクのnice値
VIRT タスクが使用している仮想メモリ(KB)
RES タスクが使用している実メモリ(KB)
SHR タスクが使用している共有メモリ(KB)
S プロセスの状態
D:割り込み不可のスリープ状態
R:実行中
S:スリープ状態
T:トレース中/停止
Z:ゾンビ
%CPU タスクのCPU使用率(%)
%MEM タスクの物理メモリの使用率(%)
TIME+ タスクが開始してから利用したCPU時間の総計
COMMAND 実行コマンド

プロセスはCPUの使用率(%CPUの項目)の高い順でソートされています。

topコマンドのキー操作(ショートカットキー)

topコマンドを実行している間は、キーボードのキー操作で様々な機能(並び替えの変更やプロセスの終了など)を使用できます。

以下にキー操作の一覧を記します。

キー操作 説明
spaceまたはEnter 表示の更新
f 表示項目の変更
h ヘルプの表示
k 指定したプロセスの終了
l 平均負荷(1行目)の表示・非表示
m メモリ・スワップ情報(4、5行目)の表示・グラフ・非表示
o 表示項目の順番を変更
p プロセスをCPU使用率でソート
q topコマンドの終了
t プロセスとCPU情報(2、3行目)の表示・非表示
u 指定したユーザーのプロセスのみ表示
z 文字に色付け
Shift + A 表示モードの変更
Shift + M プロセスをメモリ使用率でソート
Shift + N プロセスをPIDでソート
Shift + T プロセスを稼働時間の長さでソート
Shift + V プロセスをツリー状に表示
Shift + W 現在の設定を保持

まとめ

本記事「【Linux】topコマンド:システムの状態(CPU、メモリなど)を継続的に監視・確認」はいかがでしたか。

Linuxサーバーを運用している方であれば、topコマンドは必ず知っておくべきコマンドの1つです。ぜひtopコマンドで表示される情報を解析できるように、本記事を活用してください。