top / htop(リアルタイムプロセス監視)
『top』は Linux 標準搭載のリアルタイムプロセス監視ツールです。CPU 使用率・メモリ使用率・ロードアベレージを端末画面に表示し続け、ボトルネックの特定や暴走プロセスの発見に役立ちます。『htop』は top の拡張版で、カラー表示・マウス操作・ツリー表示をサポートし、直感的な操作でプロセスを確認・シグナル送信できます。
構文
# -----------------------------------------------
# top の起動オプション
# -----------------------------------------------
# top
# → リアルタイムでプロセス一覧を表示します
# 例: top
# top -d {秒数}
# → 画面の更新間隔(秒)を指定して起動します
# 例: top -d 2
# top -u {ユーザー名}
# → 特定のユーザーのプロセスだけを表示します
# 例: top -u goku
# top -p {PID} [{PID} ...]
# → 指定した PID のプロセスだけを監視します
# 例: top -p 1234 -p 5678
# top -b -n {回数}
# → バッチモードで指定回数だけ出力してから終了します
# → ログファイルへのリダイレクトや他コマンドへのパイプに使います
# 例: top -b -n 3 > /tmp/top_snapshot.txt
# top -H
# → スレッド単位でプロセスを表示します
# 例: top -H
# -----------------------------------------------
# top の対話操作キー一覧
# -----------------------------------------------
# q → top を終了します
# k → PID を入力してプロセスにシグナルを送ります(デフォルト SIGTERM)
# r → PID を入力してプロセスの nice 値を変更します(renice)
# M → メモリ使用量(%MEM)の降順に並び替えます
# P → CPU 使用率(%CPU)の降順に並び替えます(デフォルト)
# T → 累積 CPU 時間(TIME+)の降順に並び替えます
# u → 表示するユーザーを絞り込みます
# c → コマンド表示をフルパス/コマンド名で切り替えます
# 1 → CPU コアを個別表示 / まとめ表示を切り替えます
# H → スレッド表示の ON/OFF を切り替えます
# i → アイドル(CPU 0%)のプロセスを非表示にします
# f → 表示するフィールドのカスタマイズ画面を開きます
# W → 現在の表示設定を ~/.toprc に保存します
# space → 即座に画面を更新します
# -----------------------------------------------
# htop の起動オプション
# -----------------------------------------------
# htop
# → htop を起動します(カラー・マウス操作対応)
# 例: htop
# htop -u {ユーザー名}
# → 特定のユーザーのプロセスだけを表示します
# 例: htop -u vegeta
# htop -p {PID}[,{PID} ...]
# → 指定した PID のプロセスだけを監視します
# 例: htop -p 1234,5678
# htop -d {更新間隔×10ms}
# → 更新間隔をデシ秒単位で指定します(20 = 2秒)
# 例: htop -d 20
# htop -t
# → ツリー表示(親子関係)で起動します
# 例: htop -t
# -----------------------------------------------
# htop の対話操作キー一覧
# -----------------------------------------------
# F1 / h → ヘルプを表示します
# F2 / S → 設定画面(カラー・カラム・メーター選択)を開きます
# F3 / / → プロセス名で検索します
# F4 / \ → プロセス名でフィルタリングします
# F5 / t → ツリー表示の ON/OFF を切り替えます
# F6 / > → ソートするカラムを選択します
# F7 / [ → 選択プロセスの nice 値を下げます(優先度を上げます)
# F8 / ] → 選択プロセスの nice 値を上げます(優先度を下げます)
# F9 / k → 選択プロセスにシグナルを送ります
# F10 / q → htop を終了します
# スペース → プロセスにタグを付けます(複数プロセス一括操作用)
# u → 表示するユーザーを絞り込みます
構文一覧
| 項目 | 説明 |
|---|---|
| load average(ロードアベレージ) | 直近 1 分・5 分・15 分の CPU 実行待ちプロセス数の平均です。CPU コア数を超えると負荷が高い状態です。例えば 4 コアのサーバーで load average: 4.00 はコアがフル稼働している状態、8.00 を超えると処理が詰まっています。 |
| %us(ユーザー空間 CPU 使用率) | ユーザープロセス(アプリケーション)が使用している CPU の割合です。アプリ自体の処理負荷を示します。 |
| %sy(カーネル空間 CPU 使用率) | カーネルの処理(システムコール・I/O 処理など)に使われている CPU の割合です。ここが高い場合はディスク I/O やネットワーク処理の多さが疑われます。 |
| %id(アイドル率) | CPU が何もしていない割合です。100% から %us + %sy + その他 を引いた値と一致します。ここが低いほど CPU が忙しい状態です。 |
| %wa(I/O 待ち率) | CPU がディスク I/O やネットワーク I/O の完了を待っている時間の割合です。高い場合はストレージのボトルネックが疑われます。 |
| PR(優先度) | カーネルが実際にスケジューリングに使う優先度です。数値が小さいほど優先されます。 |
| NI(nice 値) | ユーザーが設定する優先度の調整値です。-20(最高優先)〜 19(最低優先)の範囲で、nice コマンドや renice コマンドで変更できます。 |
| VIRT(仮想メモリ量) | プロセスが確保している仮想メモリの合計です。共有ライブラリやスワップ領域も含むため、実際の消費量より大きくなります。 |
| RES(物理メモリ使用量) | プロセスが実際に使用している物理 RAM の量です。メモリ消費量の実態を把握するにはこの値を見てください。 |
| SHR(共有メモリ量) | 他のプロセスと共有している共有ライブラリ等のメモリ量です。RES からこの値を引くと、プロセス固有のメモリ消費量が分かります。 |
| S(プロセスの状態) | プロセスの現在の状態を示します。R(実行中)・S(スリープ中)・D(割り込み不可スリープ・I/O 待ち)・Z(ゾンビ)・T(停止)があります。 |
| TIME+(累積 CPU 時間) | プロセスが起動してから使用した CPU 時間の累積値です。常駐プロセスの CPU 消費量の長期的な傾向を確認できます。 |
使用例
top の出力例
$ top
top - 14:23:05 up 12 days, 3:44, 2 users, load average: 1.42, 0.87, 0.65
Tasks: 218 total, 2 running, 216 sleeping, 0 stopped, 0 zombie
%Cpu(s): 18.3 us, 4.2 sy, 0.0 ni, 76.1 id, 1.2 wa, 0.0 hi, 0.2 si, 0.0 st
MiB Mem : 15872.0 total, 3421.4 free, 8654.2 used, 3796.4 buff/cache
MiB Swap: 4096.0 total, 3988.1 free, 107.9 used. 6592.3 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1001 goku 20 0 3254812 412340 54320 R 42.3 2.5 8:12.34 kamehameha
1002 vegeta 20 0 2183204 228900 41200 S 18.7 1.4 3:44.21 final_flash
1003 piccolo 20 0 986432 98712 22100 S 5.2 0.6 1:23.07 makankosappo
1004 krillin 20 0 524288 52480 18900 S 2.1 0.3 0:45.18 destructo_disc
1005 trunks 20 0 768000 76800 21000 S 1.0 0.5 0:12.55 burning_attack
1 root 20 0 168940 13508 8820 S 0.0 0.1 0:05.42 systemd
987 root 20 0 421312 31200 20100 S 0.0 0.2 0:02.16 sshd
# load average: 1.42, 0.87, 0.65
# → 直近 1分・5分・15分の平均ロードです
# → 4コアのサーバーであれば 1.42 はまだ余裕があります
# → 15分値(0.65)より1分値(1.42)が高いので、直近の負荷が増加中です
#
# %Cpu(s): 18.3 us, 4.2 sy, 76.1 id, 1.2 wa
# → ユーザー空間が 18.3%、カーネル空間が 4.2% を使用中です
# → アイドルが 76.1% あるので、まだ余裕があります
# → I/O 待ちが 1.2% あるので、軽微なディスク I/O が発生しています
#
# PID 1001 goku の kamehameha プロセスが CPU 42.3% を消費しています
# S=R(Running)なので現在 CPU を積極的に使用中のプロセスです
よく使うコマンドオプション
# ----------------------------------------------- # バッチモードで top の出力をファイルに保存する # ----------------------------------------------- # -b でバッチモード、-n で取得回数を指定します # 負荷調査のスナップショット取得に使います top -b -n 1 > /tmp/top_snapshot.txt # CPU 使用率の高いプロセスを上位 10 件だけ保存します top -b -n 1 | head -n 17 > /tmp/top_top10.txt # ----------------------------------------------- # 特定ユーザーのプロセスだけを監視する # ----------------------------------------------- # goku ユーザーのプロセスだけを表示します top -u goku # htop の場合は -u オプションを使います htop -u goku # ----------------------------------------------- # top と htop の使い分け # ----------------------------------------------- # top: サーバーに必ず入っている標準ツールです # → SSH 接続直後でも使えます # → スクリプトやバッチ処理との連携(-b オプション)に向いています top -d 3 # htop: インストールが必要ですが操作性が大幅に向上します # → F3 でプロセス名検索、F4 でフィルタリングが直感的に行えます # → ツリー表示(F5)で親子関係を把握しやすいです # → マウスでカラムをクリックしてソートできます htop -t # ----------------------------------------------- # htop のインストール # ----------------------------------------------- # Debian / Ubuntu 系 sudo apt install htop # RHEL / AlmaLinux / Rocky Linux 系 sudo dnf install htop
実行するコマンドは次の通りです。
$ top -b -n 1 | head -n 17
top - 14:23:05 up 12 days, 3:44, 2 users, load average: 1.42, 0.87, 0.65
Tasks: 218 total, 2 running, 216 sleeping, 0 stopped, 0 zombie
%Cpu(s): 18.3 us, 4.2 sy, 0.0 ni, 76.1 id, 1.2 wa, 0.0 hi, 0.2 si, 0.0 st
MiB Mem : 15872.0 total, 3421.4 free, 8654.2 used, 3796.4 buff/cache
MiB Swap: 4096.0 total, 3988.1 free, 107.9 used. 6592.3 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1001 goku 20 0 3254812 412340 54320 R 42.3 2.5 8:12.34 kamehameha
1002 vegeta 20 0 2183204 228900 41200 S 18.7 1.4 3:44.21 final_flash
1003 piccolo 20 0 986432 98712 22100 S 5.2 0.6 1:23.07 makankosappo
1004 krillin 20 0 524288 52480 18900 S 2.1 0.3 0:45.18 destructo_disc
1005 trunks 20 0 768000 76800 21000 S 1.0 0.5 0:12.55 burning_attack
1 root 20 0 168940 13508 8820 S 0.0 0.1 0:05.42 systemd
987 root 20 0 421312 31200 20100 S 0.0 0.2 0:02.16 sshd
概要
『top』は Linux に標準搭載されているリアルタイムプロセス監視ツールです。サーバーに SSH 接続して「なんか重い」と感じたときに最初に実行するコマンドであり、ロードアベレージ・CPU 使用率・メモリ使用量を一画面で把握できます。ロードアベレージは CPU コア数と比較して判断することが重要で、例えば 4 コアのサーバーであれば 4.00 を超えたあたりから処理待ちが発生し始めます。CPU 使用率の %wa(I/O 待ち)が高い場合はストレージやネットワーク I/O のボトルネックが疑われるため、vmstat / iostat と組み合わせて詳しく調査するのが効果的です。長期的な傾向を分析したい場合は sar / sysstat でデータを蓄積して傾向を確認します。『htop』は top を使いやすく拡張したツールで、カラー表示・マウス操作・ツリー表示に対応しています。インタラクティブな調査には htop、スクリプトや自動化には top -b(バッチモード)という使い分けが一般的です。
記事の間違いや著作権の侵害等ございましたらお手数ですがこちらまでご連絡頂ければ幸いです。