言語
日本語
English

Caution

お使いのブラウザはJavaScriptが無効になっております。
当サイトでは検索などの処理にJavaScriptを使用しています。
より快適にご利用頂くため、JavaScriptを有効にしたうえで当サイトを閲覧することをお勧めいたします。

Linux & Mac & Bashコマンド辞典

  1. トップページ
  2. Linux & Mac & Bashコマンド辞典
  3. top / htop(リアルタイムプロセス監視)

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(バッチモード)という使い分けが一般的です。

記事の間違いや著作権の侵害等ございましたらお手数ですがまでご連絡頂ければ幸いです。