ログ・監視系

【Linuxの基礎知識】top / htopの違いと使い分け|リアルタイム監視の基本

Linuxでシステムの状態を把握するとき、あなたはどのコマンドを使っていますか?

多くの現場でまず思い浮かべるのは「top」ですが、最近では「htop」という選択肢も一般的になりつつあります。どちらもリアルタイムでCPUやメモリ、プロセスの状況を確認できる便利なツールですが、その表示形式や操作感には大きな違いがあります。

たとえば、topは標準でほぼすべてのLinuxディストリビューションに導入されており、軽量で確実に動作します。

一方でhtopは、色分けされた直感的な画面表示やカーソルによる操作性に優れ、プロセス階層を視覚的に確認できる点が特徴です。

では、どの場面でtopを選び、どの場面でhtopを使うべきなのでしょうか。

本記事では両者の違いやメリットを整理し、リアルタイム監視の基本を改めて押さえていきます。

topコマンドとは?

Linuxシステムの稼働状況をリアルタイムに把握するために、多くの管理者が最初に利用するのがtopコマンドです。CPUやメモリの使用率、稼働中のプロセスなどを一覧で確認でき、システムの健全性を即座に把握できます。

標準で多くのLinuxディストリビューションに導入されており、追加のインストールを必要としない点も大きな利点です。

ここではtopコマンドの概要と基本機能について整理します。

基本概要

topコマンドは、Linux上で動作しているプロセスの一覧をリアルタイムに表示するコマンドです。

管理者はプロセスの状態やシステムリソースの使用状況を一目で把握できるため、負荷状況の確認やトラブルシュートに役立ちます。

実行すると画面が動的に更新され、数秒ごとに最新の情報へ切り替わります。

top

【出力例:】

top - 10:32:41 up 10 days, 4:12, 2 users, load average: 0.12, 0.18, 0.15
Tasks: 178 total, 1 running, 177 sleeping, 0 stopped, 0 zombie
%Cpu(s): 2.0 us, 1.0 sy, 0.0 ni, 96.5 id, 0.3 wa, 0.0 hi, 0.2 si, 0.0 st
MiB Mem : 16000 total, 3500 free, 7200 used, 5300 buff/cache
MiB Swap: 2048 total, 2000 free, 48 used. 7200 avail Mem

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1423 root 20 0 400000 25000 8000 S 5.0 0.2 0:01.23 apache2
1622 postgres 20 0 320000 15000 6000 S 1.2 0.1 0:00.75 postgres

取得できる情報の種類

topコマンドで確認できる情報は、CPUやメモリなどのシステム全体のリソース使用状況と、各プロセスに関する詳細情報です。

以下のような情報を取得できます。

項目内容
CPU使用率ユーザー、システム、アイドル時間などを区分して表示
メモリ使用量物理メモリとスワップ領域の利用状況
ロードアベレージ過去1分、5分、15分の平均負荷を表示
プロセス情報PID、ユーザー、優先度、メモリ使用量、CPU使用率

メリットと特徴

topコマンドの最大のメリットは、標準で利用可能である点と、システム全体の状態を即時に確認できる点です。

追加インストールの手間がなく、ほとんどの環境で利用できるため、サーバー障害やトラブル発生時にも迅速に状況を把握できます。また、負荷の高いプロセスを特定して即座に対応できるため、運用現場では欠かせない基本ツールとなっています。

さらに、キー操作によりソートや表示切り替えが可能で、必要に応じて柔軟に情報を確認できます。

htopコマンドとは?

Linuxの稼働状況を確認する際、より直感的で操作性に優れた方法として多くの管理者に利用されているのがhtopコマンドです。

topコマンドと同様にプロセスやCPU、メモリの状態をリアルタイムで確認できますが、視覚的にわかりやすい色分け表示やカーソルキーを使った操作に対応している点が大きな特徴です。

システム監視を効率的に行いたい場合や、複雑なサーバー環境を扱う場合に特に有用です。

基本概要

htopコマンドはtopの改良版とも言えるツールで、対話的にシステムのプロセスを操作できるインターフェースを備えています。

マウス操作やカーソルキーでプロセスを選択し、そのまま終了や優先度変更を行えるため、topに比べて使いやすさが格段に向上しています。

多くのLinuxディストリビューションでは標準リポジトリからインストール可能です。

htop

【出力例:】

0[ 0.0%] 4[ 0.0%]
1[ 0.0%] 5[ 0.0%]
2[ 0.0%] 6[ 0.0%]
3[ 0.0%] 7[****100.0%]
Mem[||##@$$$$$$$$ 2.35G/38.5G] Tasks: 117, 267 thr, 167 kthr; 0 running
Swp[ 0K/19.5G] Load average: 0.00 0.02 0.00
Uptime: 24 days, 14:41:24

[Main] [I/O]
PID USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command△
1 root 20 0 171M 18800 11032 S 0.0 0.0 0:23.75 /usr/lib/systemd/systemd --system --deserialize 23
866 root 16 -4 96216 2840 2048 S 0.0 0.0 0:01.17 ├─ /sbin/auditd
(省略)

取得できる情報の種類

htopコマンドで得られる情報はtopと共通する部分が多いですが、視覚的に整理されているため状況を把握しやすいという特徴があります。以下の情報を確認できます。

項目内容
CPU使用率コアごとの使用率を色分けで表示
メモリ使用量物理メモリ・スワップ領域の利用状況をバー表示
ロードアベレージシステム全体の負荷状況を確認
プロセス情報PID、ユーザー、優先度、使用リソースなどをツリー表示

メリットと特徴

htopコマンドの最大のメリットは、操作性の高さと見やすいインターフェースにあります。

カーソルやマウスを使ってプロセスを直接操作できるため、killコマンドを別途実行する必要がありません。また、CPUやメモリの使用状況をグラフィカルに確認できるため、システム全体の状態を直感的に把握できます。

さらに、プロセスの階層構造をツリー形式で表示できるため、親子関係を追跡してトラブルシュートを行う際にも非常に便利です。

topとhtopの導入手順

Linux環境でシステム監視を行う際に欠かせないのがtopとhtopです。topは多くのディストリビューションで標準搭載されていますが、htopは追加インストールが必要になる場合があります。

ここではそれぞれの導入方法と、基本的な起動と終了方法を整理します。

パッケージのインストール方法

topコマンドは標準でインストールされているため、特別な作業は不要です。一方、htopはディストリビューションのパッケージマネージャーを利用してインストールします。

以下に代表的なインストール手順を示します。

# RHEL系(CentOS / AlmaLinux / Rocky Linux)
sudo dnf install -y htop

# Debian / Ubuntu系
sudo apt-get update
sudo apt-get install -y htop

【出力例:】

Installed: htop-3.2.2-1.el9.x86_64
Complete!

基本的な起動と終了方法

インストールが完了すれば、topやhtopはコマンド名を入力するだけで起動できます。どちらも画面が動的に更新され、システムの状況を確認しながら監視を続けられます。

終了するときは共通して「q」キーを押せば即座に終了できます。

もし反応しない場合や強制的に停止したい場合には、一般的なLinuxコマンドと同様に「Ctrl+C」で強制終了することも可能です。

直感的な操作やカーソルによる管理を重視するならhtop、標準環境ですぐに利用できる点を優先するならtopを利用すると良いでしょう。

topの基本的な使い方

topコマンドは「今、このサーバーで何が起きているのか」をその場で映し出してくれる便利な監視ツールです。常に変化するCPUやメモリの使用状況、そして数多くのプロセスを動的に確認できるため、システム管理に欠かせない存在です。

ここでは、管理の現場でよく使うオプションや表示方法を整理して、実際に手を動かしながら理解できるように解説します。

topコマンドはオプションを付けることで、表示の仕方や監視の対象を変えることができます。頻繁に利用されるものを一覧でまとめます。

オプション内容
-u ユーザー名指定したユーザーが実行しているプロセスのみを表示
-p PID特定のプロセスIDに絞って監視
-n 回数指定した回数だけ更新して終了
-d 秒数更新間隔を秒単位で変更

基本表示

もっともシンプルな使い方は、オプションを付けずにそのまま実行する方法です。これだけでCPU負荷やメモリ状況、主要なプロセスが一覧表示されます。

top

【出力例:】

top - 14:05:21 up 7 days, 4:32, 2 users, load average: 0.25, 0.31, 0.28
Tasks: 180 total, 1 running, 179 sleeping, 0 stopped, 0 zombie
%Cpu(s): 3.0 us, 1.0 sy, 0.0 ni, 95.5 id, 0.3 wa, 0.0 hi, 0.2 si, 0.0 st
MiB Mem : 16000 total, 3200 free, 7800 used, 5000 buff/cache
MiB Swap: 2048 total, 2000 free, 48 used. 7200 avail Mem

条件付き表示(ユーザー・対象指定)

特定のユーザーやプロセスだけを確認したい場合には、オプションを組み合わせると便利です。管理対象が多い環境でも効率的に監視できます。

top -u postgres

【出力例:】

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1622 postgres 20 0 320000 15000 6000 S 1.5 0.1 0:00.95 postgres
1630 postgres 20 0 300000 12000 5000 S 0.8 0.1 0:00.41 postgres

詳細表示(拡張オプション)

topにはプロセスごとの詳細をさらに掘り下げて確認できるオプションもあります。更新間隔を短くしてリアルタイム性を高めたり、特定のプロセスに張り付くように監視したりできます。

top -d 1 -p 1423

【出力例:】

top - 14:10:05 up 7 days, 4:37, 2 users, load average: 0.15, 0.22, 0.25
Tasks: 180 total, 1 running, 179 sleeping, 0 stopped, 0 zombie
%Cpu(s): 5.0 us, 2.0 sy, 0.0 ni, 92.5 id, 0.3 wa, 0.0 hi, 0.2 si, 0.0 st

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1423 root 20 0 400000 25000 8000 S 6.5 0.2 0:03.12 apache2

このように、topはそのままでも強力ですが、オプションを活用することでさらに柔軟に監視できるツールになります。

htopの基本的な使い方

htopコマンドはtopと同じくプロセスやリソースの状況を監視するツールですが、インターフェースのわかりやすさや操作性の高さで評価されています。色分けされた画面やカーソルによる選択、プロセスの階層表示など、視覚的に理解しやすい工夫がされているため、サーバー運用の現場で重宝されています。

ここでは、管理者がよく利用するオプションや操作方法を中心に解説します。

よく使うオプション一覧表

htopは対話的に操作するのが基本ですが、起動時にオプションを付けることで表示内容を絞り込むことも可能です。以下のようなオプションがよく使われます。

オプション内容
-u ユーザー名指定したユーザーのプロセスだけを表示
-p PID指定したプロセスIDを監視対象にする
-d 秒数画面更新の間隔を変更
-s 項目指定した項目を基準にソートして起動
-t起動時からツリー表示モードで開始
-C色なしで出力(ログ保存や記事用のサンプル作成に便利)
-n 回数指定した回数だけ更新して終了(1回のみ取得などに利用)

基本表示と操作方法(カーソル操作)

htopをオプションなしで起動すると、色分けされたCPUやメモリの使用状況、そしてプロセス一覧が表示されます。画面は動的に更新され、カーソルキーでプロセスを選択し、そのままkillなどの操作を行えるのが大きな特徴です。

htop

【出力例:】

0[ 0.0%] 4[ 0.0%]
1[ 0.0%] 5[ 0.0%]
2[ 0.0%] 6[ 0.0%]
3[ 0.0%] 7[**********************************************100.0%]
Mem[||##@$$$$$$$$ 2.35G/38.5G] Tasks: 117, 267 thr, 167 kthr; 0 running
Swp[ 0K/19.5G] Load average: 0.00 0.02 0.00
Uptime: 24 days, 14:41:24

[Main] [I/O]
PID USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command△
1 root 20 0 171M 18800 11032 S 0.0 0.0 0:23.75 /usr/lib/systemd/systemd --system --deserialize 23
866 root 16 -4 96216 2840 2048 S 0.0 0.0 0:01.17 ├─ /sbin/auditd
(省略)

選択したプロセスはF9キーで終了できるなど、対話的に管理ができる点が魅力です。

条件付き表示(ユーザー・対象指定)

特定のユーザーやプロセスに絞り込みたい場合は、起動時にオプションを指定します。大量のプロセスが稼働する環境でも効率よく監視が可能です。

htop -u postgres

【出力例:】

0[ 0.0%] 4[ 0.0%]
1[ 0.0%] 5[ 0.0%]
2[ 0.0%] 6[ 0.0%]
3[ 0.0%] 7[**********************************************100.0%]
Mem[||##@$$$$$$$$ 2.35G/38.5G] Tasks: 117, 267 thr, 167 kthr; 0 running
Swp[ 0K/19.5G] Load average: 0.00 0.00 0.00
Uptime: 24 days, 14:43:36

[Main] [I/O]
PID USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command△
153356 postgres 20 0 419M 28160 26368 S 0.0 0.1 1:05.72 └─ /usr/pgsql-16/bin/postgres -D /var/lib/pgsql/16/
153357 postgres 20 0 276M 7868 6156 S 0.0 0.0 0:00.03 ├─ postgres: logger
(省略)

階層表示(ツリー表示)

htopの特徴的な機能のひとつが、プロセスの親子関係をツリー形式で表示できる点です。サービスの起動プロセスや子プロセスの関係性を把握することで、トラブルシュートが容易になります。

ツリー表示は起動後にF5キーを押すと切り替えられます。また、起動時からツリー表示を有効にしたい場合はオプション「-t」を付けて実行することも可能です。

htop -t

【出力例(ツリー表示):】

systemd─┬─sshd───bash───htop
├─postgres─┬─postgres
│ ├─postgres
│ └─postgres
└─httpd─┬─httpd
├─httpd
└─httpd

このようにツリー形式を有効にすると、コンソール画面の右側にプロセスの階層が並んで表示されます。どのプロセスが親で、そこからどの子プロセスが派生しているのかが一目でわかるため、複雑なシステムの調査や原因追及にとても役立ちます。

出力結果をファイルに保存する方法

記事のような出力例を残したい場合、htopを通常起動して画面コピーするのは不便です。そこで、バッチモードやログ保存機能を使うと便利です。

htop -C -n 1 > htop_output.txt

このように実行すると、htopの内容を1回分だけ取得してファイルに保存できます。色情報は削除されますが、記事やドキュメントに載せるには最適です。 また、端末全体を記録したいときは script コマンドも有効です。

script htop.log
htop -n 1
exit

こうすることで、端末に表示された内容をそのままログとして残すことができます。

top / htopの応用と拡張

topやhtopは、単に一時的なリソース監視に使うだけでなく、工夫次第で日常の運用監視にも役立ちます。たとえばcronでの定期実行やログ保存、さらに他ツールと組み合わせることで、より実践的な監視基盤を構築できます。

ここではその応用例を紹介します。

長期監視(設定ファイルやcron)

一瞬の状態を見るだけではなく、時間の経過による傾向を把握したいときにはcronによる定期実行が便利です。topはオプションを付けて指定回数実行後に終了させることができるため、その結果をログに残す方法がよく使われます。

*/5 * * * * top -b -n 1 >> /var/log/top_monitor.log

【出力例(ログの一部):】

top - 16:20:01 up 12 days, 6:12, 2 users, load average: 0.30, 0.28, 0.25
Tasks: 185 total, 1 running, 184 sleeping, 0 stopped, 0 zombie
%Cpu(s): 4.2 us, 1.0 sy, 0.0 ni, 94.5 id, 0.3 wa, 0.0 hi, 0.2 si, 0.0 st
MiB Mem : 16000 total, 3000 free, 8000 used, 5000 buff/cache

このように定期的に実行すれば、負荷が高くなる時間帯を可視化することができます。

ログ管理と保存方法

監視結果を残しておきたい場合は、ログファイルへのリダイレクトが基本です。ただし長期間保存するとファイルが肥大化するため、logrotateなどと組み合わせて自動的に世代管理を行うのが効果的です。

sudo vi /etc/logrotate.d/top_monitor

【設定例:】

/var/log/top_monitor.log {
weekly
rotate 4
compress
missingok
notifempty
}

これにより、古いログは自動的に圧縮され、最新の数週間分だけが保持されるため、ストレージを圧迫せずに監視結果を残すことができます。

他ツールとの組み合わせ

topやhtop単体でも十分役立ちますが、さらに実践的に使うには他のツールとの連携が有効です。たとえばプロセス数やCPU使用率が閾値を超えた場合にメールで通知する仕組みを作ると、トラブルの早期発見につながります。

top -b -n 1 | grep "Cpu(s)" | awk '{print $2}'

【出力例:】

5.2

この数値をスクリプトで監視し、閾値を超えた場合にsendmailやmailコマンドと組み合わせることで、システムの異常を自動通知する仕組みを構築できます。

また、グラフ化ツール(例: gnuplotやGrafana)と連携すれば、日次や週次の傾向をビジュアルに把握できるようになります。

このようにtopとhtopは単発で利用するだけではなく、定期監視やログ管理、他ツールとの連携によって監視基盤の一部として活用することができます。

実践的な活用例

topとhtopは単に「CPUやメモリの状況を眺めるツール」ではなく、実際の現場でトラブルに対応するときや日々の運用を行う際に大きな助けとなります。

ここでは具体的な活用シーンを通じて、読者がどのように役立てられるのかを整理します。

トラブルシュートでの使い分け

システムの動作が急に重くなったとき、原因を突き止めるためにtopとhtopは使い分けるのが効果的です。

例えば、topで負荷の高いプロセスを数値的に素早く確認し、特定のPIDを見つけた後に、htopを使ってそのプロセスがどの親から派生しているかをツリー表示で追跡します。

この組み合わせによって、「Apacheが暴走しているのか、それとも背後のCGIスクリプトが原因なのか」といった構造的な把握が容易になります。

こうしたフローを持つことで、単なる数字の確認ではなく、根本原因を掴むスピードを高められます。

top -p 1423

【出力例:】

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1423 apache 20 0 400000 25000 8000 R 95.0 0.2 1:23.45 httpd

このようにtopで特定のプロセスを絞り込み、その後htopで階層的に全体像を確認することで、調査の精度と効率を大幅に高めることができます。

サーバー運用における利用シーン

日常的なサーバー運用でも、topとhtopは役割を分けて使うことでメリットがあります。

リソースの状態を一瞬で確認したいときは軽量なtopが適しており、例えばcronから定期的に記録させることで「夜間に負荷が高まっていないか」を後から検証できます。

一方で、メンテナンス作業中や障害発生時にはhtopを使うと便利です。カーソルで対象プロセスを選び、その場で終了や優先度の変更ができるため、迅速な対応が可能になります。

htop

【出力例(カーソル操作で選択可能):】

0[ 0.0%] 4[ 0.0%]
1[ 0.0%] 5[ 0.0%]
2[ 0.0%] 6[ 0.0%]
3[ 0.0%] 7[****100.0%]
Mem[||##@$$$$$$$$ 2.35G/38.5G] Tasks: 117, 267 thr, 167 kthr; 0 running
Swp[ 0K/19.5G] Load average: 0.00 0.02 0.00
Uptime: 24 days, 14:41:24

[Main] [I/O]
PID USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command△
1 root 20 0 171M 18800 11032 S 0.0 0.0 0:23.75 /usr/lib/systemd/systemd --system --deserialize 23
866 root 16 -4 96216 2840 2048 S 0.0 0.0 0:01.17 ├─ /sbin/auditd
(省略)

このようにtopとhtopを場面に応じて選び分けることで、監視から調査、そして対応までをシームレスにつなげられるのが最大のメリットです。

top / htop利用時の注意点

topやhtopは便利な監視ツールですが、無条件に使えばよいわけではありません。監視そのものがシステムに負荷を与えることもあれば、使い方を誤ると誤解を招くこともあります。

ここでは利用時に知っておきたい注意点を紹介し、読者が安心して使えるように整理します。

パフォーマンスへの影響

監視は情報を収集する行為である以上、少なからずシステムに負荷をかけます。特にhtopは画面描画や色分け表示、カーソル操作の処理が加わるため、リソースが限られた小規模サーバーでは影響が出る可能性があります。

たとえば、長時間htopを起動しっぱなしにすると、そのプロセス自体がCPU時間を消費してしまい、本来監視すべきサーバーの挙動を乱すことになりかねません。

そのため、長期的に状態を把握したい場合はtopやhtopを直接使い続けるのではなく、sarやvmstatなどの軽量なコマンドと併用して記録する方が安全です。

vmstat 5 3

【出力例:】

procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 0 320000 100000 500000 0 0 5 3 100 200 2 1 97 0 0

このように軽量なコマンドを補助的に使えば、監視自体による影響を抑えつつ、必要な情報を長期間収集できます。

運用上の落とし穴

運用現場では「見えている情報がすべて」と思い込むことが最大の落とし穴です。topやhtopで確認できるのはあくまで瞬間的な状態であり、数秒間隔で更新される数値を見ても、実際のトラブルの根本原因とは異なる場合があります。

例えば、一瞬だけCPU使用率が跳ね上がったプロセスを見つけても、それが本当に問題の主因なのかは判断できません。また、htopのツリー表示で親子関係を追えても、プロセス終了後は情報が消えてしまうため、後から振り返ることができません。

こうしたリスクを避けるためには、topやhtopを「即時対応のための目」として使い、詳細な履歴や原因分析はログ収集ツールや監視システムに任せることが重要です。

役割を正しく切り分ければ、誤解や対応ミスを防ぎ、安心してシステムを運用できるようになります。

まとめ

topとhtopは、どちらもLinuxシステムを監視する上で欠かせないツールです。topは軽量でほとんどの環境に標準搭載されており、数値を素早く確認できる点が大きな魅力です。一方、htopは直感的な操作とわかりやすいインターフェースを備えており、トラブル時の原因追及や運用中のプロセス管理をスムーズに進められます。

読者にとってのメリットは、単に「どちらを使うか」ではなく、「どの場面でどちらを選ぶべきか」を知ることにあります。即応性が求められる障害対応ではhtopのツリー表示や操作性が役立ち、日常的な負荷チェックやログ保存にはtopが最適です。両者の特性を理解して状況に応じて使い分けることで、システム監視の効率は大きく向上します。

また、監視の結果をその場限りで終わらせず、ログや他の監視ツールと組み合わせることで、長期的な分析や再発防止につなげられる点も忘れてはいけません。topとhtopは、単体でも便利ですが、運用全体の仕組みに組み込むことで真価を発揮します。これらを適切に活用できれば、トラブルシュートの精度が上がり、安心してサーバーを運用できる体制を築けるようになります。

次のおすすめ記事

実践環境を整える

ここまで学んだ知識を実際に試すには、Linuxを動かす環境が必要です。手軽に始めるならVPSを利用するのがおすすめです。
VPS徹底比較!ConoHa・さくら・Xserverの選び方



VPSを利用してLinux環境を準備したら、実際の設定は下記の記事が参考になります。
VPSに開発環境を自動構築する方法|Apache+Tomcat+PostgreSQL

よく読まれている記事

1

「私たちが日々利用しているスマートフォンやインターネット、そしてスーパーコンピュータやクラウドサービス――これらの多くがLinuxの力で動いていることをご存じですか? 無料で使えるだけでなく、高い柔軟 ...

2

Linux環境でよく目にする「Vim」という名前。サーバーにログインしたら突然Vimが開いてしまい、「どうやって入力するの?」「保存や終了ができない!」と困った経験をした人も多いのではないでしょうか。 ...

3

ネットワーク技術は現代のITインフラにおいて不可欠な要素となっています。しかし、ネットワークを深く理解するためには、その基本となる「プロトコル」と「レイヤ」の概念をしっかり把握することが重要です。 こ ...

4

この記事は、Linuxについて勉強している初心者の方向けに「Shellスクリプト」について解説します。最後まで読んで頂けましたら、Shellスクリプトはどのような役割を担っているのか?を理解出来るよう ...

5

Javaは世界中で広く使われているプログラミング言語であり、特に業務システムやWebアプリケーションの開発において欠かせない存在です。本記事では、初心者向けにJavaの基礎知識を網羅し、環境構築から基 ...

-ログ・監視系