Linux入門:コマンド操作のきほん

topでリアルタイム監視する

生田 陸人
LuaGate エンジニア / 現役エンジニア
編集 LuaGate編集部

topでリアルタイム監視する とは

topコマンドで、CPUやメモリの使用状況など、システムの状態をリアルタイムに監視します。本レッスンでは、topでリアルタイム監視する の基本から実際の使いどころまでを整理し、現場で迷わず使える形に落とし込みます。

なぜ重要か

ps がスナップショットなのに対し、top は数秒間隔で画面を更新し、サーバーの「いま」を動画のように見せてくれるツールです。CPU 使用率が突然跳ね上がった、メモリが食われている、ロードアベレージが上がっているといった現象に直面したとき、top は真っ先に立ち上げる定番の診断画面になります。MySQL や Redis、Node のような長時間動くデーモンが、本当にリソースを浪費しているのかを直感的に観察できる点が強みです。

本コースの実行環境 (Cloud Functions ベース) では top のように画面を制御するインタラクティブコマンドは動かせないため、本レッスンは概念と読み方の解説に絞ります。同じ情報をバッチ形式で取れる top -bn1 や、現代的な代替コマンドにも触れます。

基本構文

ターミナル

top [オプション]

対話的に起動するのが本来の使い方ですが、自動化やログ収集では top -b -n 1 (batch mode, 1 回だけ出力) で 1 スナップショットだけ取り出すのが定番です。

オプション役割
-bbatch mode (端末制御を使わずプレーン出力)
-n NN 回更新したら自動終了
-d N更新間隔を N 秒に設定
-u user指定ユーザーのプロセスだけ
-p PID指定 PID だけ
-Hスレッド表示モード

画面の読み方

diagram (will load when visible)

上から順に、システム時刻とロードアベレージ、プロセスの状態別集計、CPU の使用率、メモリの使用量、そして一覧へと続きます。一覧では PID, USER, %CPU, %MEM, TIME, COMMAND がデフォルトで並びます。

CPU 行の見方

プレーンテキスト

%Cpu(s): 4.2 us, 1.0 sy, 0.0 ni, 94.5 id, 0.2 wa, 0.0 hi, 0.1 si, 0.0 st

この行は CPU 時間の内訳を示しています。

ラベル意味
ususer 空間で使われた CPU 時間
syカーネル空間
ninice 値で優先度を変えたプロセス
idアイドル
waI/O 待ち
hiハードウェア割り込み
siソフトウェア割り込み
st仮想化環境で他 VM に奪われた時間

アプリが重いのに us が低く wa が高い場合、CPU ではなくディスク I/O が詰まっています。原因の切り分けに直結します。

対話モードのキー操作

対話モードで覚えておくと作業効率が変わるキーがいくつかあります。

キー動作
q終了
P%CPU の降順でソート
M%MEM の降順でソート
TTIME (累計 CPU 時間) で並べ替え
k指定 PID を kill
u指定ユーザーのプロセスだけ表示
1コア別 CPU 使用率を切り替え

top を起動したら M を押す、これだけでメモリ食いを上から並べた画面に切り替わります。P なら CPU 食い順です。

top を起動するときは「何が知りたいのか」を最初に決めましょう。CPU を見たいのか、メモリを見たいのか、I/O 待ちを見たいのかで、初手のキー操作が変わります。漫然と眺めるよりも、目的を持って操作するほうが学習効率も高まります。

batch mode でログを取る

対話画面を奪われたくない、あるいは結果を別のスクリプトで処理したい場合は batch mode を使います。

ターミナル

top -b -n 1 | head -20 # top - 09:00:00 up 12 days, ... # Tasks: 120 total, ... # %Cpu(s): ... # MiB Mem : ... # PID USER ...

ターミナル

top -b -n 1 -u www-data | head

batch mode は端末制御コードを出力しないため、grep, awk, tee でログとして処理できます。Cron などから定期的に取得し、サーバーの負荷をテキストとして残しておくのは観測の第一歩として有効です。

現代的な代替: htop と btop

top は POSIX 標準で広く入っていますが、UI に手を入れたい場合は htop や btop+ といった代替ツールが人気です。色付き、フィルタリング、ツリー表示、マウス操作、グラフ表示などが追加されています。多くのディストロでパッケージとして提供されており、apt install htopdnf install htop で導入できます。

ターミナル

# 比較イメージ (擬似コマンド) top # どこでも入っている標準 htop # 視認性の高い対話 UI btop # グラフィカルでさらに詳細

標準のサーバーには top しか入っていない場合が多いです。普段は htop でも、本番運用では「top で見て当たりを付ける」スキルを保っておきましょう。

ロードアベレージの読み方

プレーンテキスト

load average: 0.32, 0.28, 0.20

左から 1 分、5 分、15 分の平均待機タスク数です。CPU コア数を超えていれば負荷が高い目安になりますが、I/O wait も含む値なのでディスクが詰まっているケースでも上昇します。uptime でも同じ値が見られます。

まとめ

  • top はリアルタイム監視ツールで、CPU/メモリ/ロードアベレージを一画面で把握できる
  • 対話モードでは P, M, k, u などのキー操作で表示を切り替える
  • 自動化やログ収集では top -b -n 1 の batch mode を使う
  • CPU 行の us, sy, wa の比率から CPU 不足か I/O 詰まりかを切り分ける
  • 視認性の高い代替として htop や btop も覚えておくと便利

次のレッスン

次は プロセスの終了 kill で、topコマンドで、CPUやメモリの使用状況など、システムの状態をリアルタイムに監視します を学びます。

事前確認 — 進む前に次の 3 つができることを確認しましょう。

  1. top コマンド の要点を自分の言葉で説明できる
  2. このレッスンの最小コード (または操作手順) を見ずに書ける
  3. 練習問題やクイズで間違えた箇所を読み直して理解した

理解度チェック (30 秒)

Q. top コマンド とは何か、1 文で説明してください。

この章のポイント

A. 本文の「このレッスンで分かること」または冒頭の説明文を見直し、自分の言葉で要約できれば OK。詰まったら本レッスンの最初の H2 セクションを読み返してみましょう。

関連レッスン

参考リンク