htopコマンドでプロセスとリソースをインタラクティブに監視する方法|topとの違いや実務活用も


この記事の監修:宮崎智広(Linux教育歴15年以上・受講者3,100名超)
HOMELinux技術 リナックスマスター.JP(Linuxマスター.JP)Linuxtips, Linuxトラブルシューティング > htopコマンドでプロセスとリソースをインタラクティブに監視する方法|topとの違いや実務活用も
「サーバーの負荷が高いのは分かるが、どのプロセスが原因か top だと読みづらい」
topコマンドの出力は情報量こそ豊富なものの、数値がずらりと並ぶだけでCPUやメモリの偏りを瞬時に掴みにくい場面があります。

この記事では、htopコマンドの実践的な使い方を、topとの違い・色分けの読み方・プロセスの強制終了・実務でのトラブルシュートまで解説します。RHEL 9.4 / Ubuntu 24.04 LTSで動作確認済みの内容で、20年以上サーバーを運用してきた現場感覚でまとめました。

この記事のポイント

・htopはtopの上位互換、カラー表示と矢印キー操作で直感的に使える
・F9でシグナル送信、F6でソート基準変更が即時にできる
・treeビュー(F5)で親子関係を追えば暴走プロセスの根元が分かる
・RHEL系はEPELリポジトリ、Ubuntu系はapt1発でインストール可能


「このままじゃマズい」と感じていませんか?
参考書を開く気力もない、同年代に取り残される不安——
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
図解60P/登録10秒/解除も3秒 / 詳細はこちら

htopとは何か?topとの違いを先に押さえる

htop(エイチトップ)は、Hisham Muhammad氏が開発したインタラクティブなプロセスビューアです。標準搭載のtopと同じくプロセス一覧・CPU・メモリ使用率を表示しますが、カラー表示・マウスクリック対応・矢印キーによるスクロールなど、操作性が大きく改善されています。

topと比較した時の主な違いは以下の通りです。

カラー表示:CPU使用率バーがuser/system/niceで色分けされ、どこに負荷が寄っているか一目で分かる
縦スクロール:↑↓キーで全プロセスを追える(topは画面内のみ)
横スクロール:←→キーで長いコマンドライン全体を確認できる
treeビュー:F5キーで親子関係をツリー表示、fork元が一発で分かる
マウス対応:カラム名クリックでソート、プロセス行クリックで選択
複数選択:Spaceキーで複数プロセスをマークして一括killできる

現場でhtopを使い始めると、もうtopには戻れないという声を受講生からもよく聞きます。

htopのインストール方法(RHEL系・Debian系)

htopは標準リポジトリに含まれていないディストリビューションもあります。環境別にインストールします。

1. Ubuntu / Debian系

aptコマンドでそのまま入ります。

# パッケージ情報更新 $ sudo apt update # htopインストール $ sudo apt install -y htop # バージョン確認 $ htop --version htop 3.3.0

2. RHEL / Rocky Linux / AlmaLinux系

標準リポジトリにhtopが無いため、EPEL(Extra Packages for Enterprise Linux)を有効化します。

# EPELリポジトリを追加 $ sudo dnf install -y epel-release # htopインストール $ sudo dnf install -y htop # インストール確認 $ which htop /usr/bin/htop

3. ソースからビルドする場合

パッケージが古い、あるいは最新版を試したい場合はソースビルドします。

# 依存パッケージ(RHEL系の例) $ sudo dnf install -y ncurses-devel autoconf automake # ソース取得 $ git clone https://github.com/htop-dev/htop.git $ cd htop $ ./autogen.sh && ./configure && make $ sudo make install

基本的な使い方|起動と画面の読み方

htopを起動して画面構成を押さえます。

1. 起動する

引数なしで起動すれば全プロセスが対象になります。

$ htop

画面は大きく3エリアに分かれます。上部左側にCPUコアごとの使用率バーとMem・Swap、上部右側にTasks数・Load average・稼働時間、下半分にプロセス一覧、最下部にファンクションキーメニューが並びます。

2. CPU使用率バーの色分けを読む

CPU行のバーは複数の色で描画されます。それぞれの意味を押さえると負荷の原因が読み解けます。

青:low priority(nice値の低い優先度)
緑:normal user processes(通常のユーザープロセス)
赤:kernel processes(カーネル・システム処理)
水色:virtualization(仮想化overhead)

赤が大きい時はカーネル側が忙しく、I/O待ちや割り込みが多い可能性があります。緑が支配的ならアプリケーション側のCPU消費です。

3. メモリ表示の読み方

Mem行は以下の色で表示されます。

緑:used memory(使用中)
青:buffers(ファイルシステムバッファ)
橙:cache(ページキャッシュ)

freeコマンドの「used」を見て慌てることがありますが、橙色のcache分はカーネルが解放可能なメモリです。実際のアプリ消費は緑部分で判断します。

プロセス操作|ソート・検索・kill

1. ソート基準を変える(F6)

F6キーを押すとソートできるカラムが左側に並びます。矢印で選んでEnterで確定します。

PERCENT_CPU:CPU使用率順(デフォルト)
PERCENT_MEM:メモリ使用率順(メモリリーク調査に必須)
TIME:累積CPU時間(長時間稼働プロセスの特定)
IO_RATE:ディスクI/O量(要root権限)

2. プロセスを検索する(F3)

F3でインクリメンタル検索ができます。プロセス名やコマンドライン文字列で絞り込めます。

類似機能としてF4のフィルタは「名前が一致するものだけ表示」するモードで、検索(F3:一致行へジャンプ)と使い分けます。長時間張り付いて監視する時はF4が便利です。

3. プロセスを強制終了する(F9)

プロセスを選択してF9を押すと、送信するシグナル一覧が左側に表示されます。

# F9後の選択肢(主要なもの) # 15 SIGTERM … 通常の終了要求(まずこれを試す) # 9 SIGKILL … 強制終了(SIGTERMが効かない場合の最終手段) # 1 SIGHUP … 設定再読み込み(Apache/nginxなど) # 2 SIGINT … Ctrl+C相当

いきなりSIGKILL(9)を送ると、DBプロセス等では不整合の原因になります。まずSIGTERM(15)、応答がなければSIGKILLの順が鉄則です。

4. 複数プロセスをまとめて操作する

Spaceキーで該当行がマーク(黄色反転)されます。マークした全プロセスに対してF9でシグナルを一括送信できます。暴走した子プロセスをまとめて止める時に重宝します。

応用・実務Tips

1. treeビューで親子関係を追う(F5)

F5でプロセスのツリー表示に切り替わります。systemdから各サービス、Apacheのworker、dockerコンテナ内のプロセスなど、fork関係が一目で分かります。

負荷の原因プロセスのPPID(親プロセスID)をtreeで辿れば、根元のサービスが特定できます。子プロセスだけをkillしても親が再生成するケースでは、親を止めるか設定側を直す判断ができます。

2. 特定ユーザーのプロセスだけ表示

uオプションで実行ユーザーを切り替えられます。Uキー(大文字)でユーザー選択画面が開きます。

# 起動時にユーザーを指定 $ htop -u www-data # 起動後はUキーで変更

WebサーバーのApache/nginxプロセスだけ、MySQLプロセスだけを見るような切り分けに便利です。

3. 遅延表示と表示項目のカスタマイズ(F2)

F2でSetupメニューに入ると、表示カラム・色テーマ・更新間隔を調整できます。カスタマイズ内容は `~/.config/htop/htoprc` に保存され、次回以降も継続します。

実サーバーでの一例です。

$ cat ~/.config/htop/htoprc # Beware! This file is rewritten by htop when settings are changed in the interface. fields=0 48 17 18 38 39 40 2 46 47 49 1 hide_kernel_threads=1 hide_userland_threads=0 shadow_other_users=0 show_thread_names=0 show_program_path=1 highlight_base_name=1 delay=15

delay=15は1.5秒間隔更新、hide_kernel_threads=1はカーネルスレッドを非表示にする設定です。

4. バッチモードでログに残す

-Cでカラーなし、-dで更新間隔、-nで繰り返し回数を指定するとシェル経由で結果保存もできます。ただし、バッチ用途はtopやpsの方が素直です。htopは基本「手動で見る」ツールと考えた方が実務に合います。

プロセス・ネットワークの深掘りには Linux ポート確認の全コマンド も組み合わせると、誰が何のポートで通信しているかも含めて特定しやすくなります。

「htop: command not found」が出た時の対処法

新規構築したばかりのサーバーで、htopが入っていないことはよくあります。

RHEL系でEPELを追加せずにdnf install htopを試すと「No match for argument: htop」と出ます。前述の手順通り、先に `sudo dnf install -y epel-release` を実行してから入れ直してください。

Alpine Linux(Dockerコンテナでよく使う)では `apk add htop` です。最小構成のコンテナイメージだとそもそもncursesが無いケースもあるので、`apk add ncurses htop` でまとめて入れるのが安全です。

「画面が崩れる」「色が変」なときの対処法

SSH経由でhtopを起動した時、罫線が崩れたり色がおかしくなることがあります。原因の多くはTERM環境変数とロケールです。

# 現在のTERMを確認 $ echo $TERM xterm-256color # ロケール確認 $ locale | grep LANG LANG=ja_JP.UTF-8 # 必要なら明示的に設定してから起動 $ TERM=xterm-256color LANG=en_US.UTF-8 htop

Windowsのターミナルソフト(Tera Term等)からの接続で文字化けが出る場合は、クライアント側の文字コード設定をUTF-8に統一します。システム全体の起動時間やサービス依存の分析は systemd-analyze で起動時間計測 と組み合わせると原因切り分けがスムーズです。

本記事のまとめ

htopは、topの情報量とpsの柔軟さを一画面で使える実務向けツールです。20年以上現場でLinuxサーバーを触ってきた経験から言うと、運用者が最初に入れるべきパッケージのひとつです。
やりたいこと コマンド/キー操作
Ubuntu系でインストール sudo apt install -y htop
RHEL系でインストール sudo dnf install -y epel-release && sudo dnf install -y htop
特定ユーザーのプロセスのみ表示 htop -u www-data
プロセス検索 F3キー(インクリメンタル検索)
ソート基準変更 F6キー(PERCENT_MEM等を選択)
プロセス強制終了 F9キー(SIGTERM→SIGKILLの順)
親子関係をツリー表示 F5キー
表示設定のカスタマイズ F2キー(Setup)

「どのプロセスが悪さをしているか」を一瞬で見抜けますか?

サーバーが急に重くなった時に原因プロセスを特定できない、killの順序を間違えてDBを壊した、こうした現場事故の多くは「プロセスとリソースの見方の基礎」が体系化できていないことが原因です。
ネットの切れ端の情報をコピペするだけでなく、現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。

「独学の時間がもったいない」「プロから直接、現場の技術を最短で学びたい」という本気の方には、2日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。


無料メルマガで学習を続ける

Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。

登録無料・いつでも解除できます

暗記不要・1時間後にはサーバーが動く

3,100名以上が実践した「型」を無料で公開中

プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。

登録10秒/合わなければ解除3秒 / 詳細はこちら

Linux無料マニュアル(図解60P) 名前とメールで30秒登録

宮崎 智広

この記事を書いた人

宮崎 智広(みやざき ともひろ)

株式会社イーネットマーキュリー代表。現役のLinuxサーバー管理者として15年以上の実務経験を持ち、これまでに累計3,100名以上のエンジニアを指導してきたLinux教育のプロフェッショナル。「現場で本当に使える技術」を体系的に伝えることをモットーに、実践型のLinuxセミナーの開催や無料マニュアルの配布を通じてLinux人材の育成に取り組んでいる。

趣味は、キャンプにカメラ、トラウト釣り。好きな食べ物は、ラーメンにお酒。休肝日が作れない、酒量を減らせないのが悩み。最近、ドラマ「フライトエンジェル」を観て涙腺が崩壊しました。