最終更新日 2025年2月12日

topコマンドとは?【Linuxのリソース監視に必須】
topコマンドは、 システムの負荷状態をリアルタイムで監視できるツール です。特に以下の情報を確認するのに役立ちます。
- CPU使用率の確認(各プロセスごとの使用率も表示)
- メモリ(RAM)使用状況の監視
- プロセスごとのリソース使用状況
- システム全体の負荷状況(Load Average)
- 特定のプロセスの状態監視
これらの情報をもとに、システムのボトルネックを特定し、負荷分散やリソースの最適化を行うことができます。


先輩、topコマンドって何のために使うんですか?

サーバーのリソース監視に使う。例えば、CPUの負荷が高すぎてシステムが遅くなる原因を特定したり、どのプロセスがメモリを消費しているかを調べたりするのに便利だよ。

topコマンドと他の監視ツール(htopやvmstat)ってどう違うんですか?

htopはtopの強化版で、プロセス管理の操作性が良い。vmstatは統計データとして表示するから、長時間のリソース傾向を見たいときに使う。リアルタイムの監視ならtopが基本だな。

topコマンドの基本的な画面の見方
topコマンドを実行すると、以下のような画面が表示されます。
$ top
top - 17:00:07 up 20 min, 2 users, load average: 0.30, 0.13, 0.20
Tasks: 202 total, 3 running, 148 sleeping, 0 stopped, 0 zombie
%Cpu(s): 1.4 us, 1.0 sy, 0.0 ni, 97.3 id, 0.3 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 976856 total, 70600 free, 712820 used, 193436 buff/cache
KiB Swap: 2098172 total, 2089980 free, 8192 used. 102368 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2001 test 20 0 3007404 174564 59964 S 1.7 17.9 0:26.32 gnome-shell
1258 root 20 0 328572 50292 25260 S 1.3 5.1 0:06.43 X
この画面は 3つのエリア に分かれています。

① システム全体の情報(最上部)
- 現在時刻
top - 17:00:07
- 稼働時間
up 20 min
- ログインユーザー数
2 users
- ロードアベレージ(負荷平均値)
0.30, 0.13, 0.20
(1分、5分、15分の平均負荷)
② CPUとメモリの使用状況
- CPU使用率:
%Cpu(s) 1.4 us, 1.0 sy, 97.3 id
us
(ユーザープロセス)、sy
(カーネル)、id
(アイドル状態)
- メモリ情報
KiB Mem : 976856 total, 70600 free, 712820 used
(メモリ総量・空き・使用中)KiB Swap: 2098172 total, 2089980 free, 8192 used
(スワップ領域)
③ プロセス一覧(各プロセスのリソース使用率)
- PID(プロセスID)
- USER(実行ユーザー)
- %CPU(CPU使用率)
- %MEM(メモリ使用率)
- COMMAND(プロセス名)

ロードアベレージってどのくらいの数値だと問題があるんですか?

ロードアベレージの値がCPUのコア数を超えると負荷が高すぎる。例えば、CPUが4コアなら 4.0
を超えると処理が滞る可能性がある。

スワップが減ると何が起きるんですか?

スワップが不足するとメモリ不足になって、システムが異常に遅くなる。最悪の場合、プロセスが強制終了することもある。
まとめ
topコマンドは、Linuxサーバーの リソース監視の基本ツール です。
CPU負荷・メモリ使用率・プロセスごとの負荷 をリアルタイムで確認でき、 システムのパフォーマンス管理 に欠かせません。
次の章では、実際の使い方や便利なオプションについて詳しく解説します。
topコマンドの基本的な使い方
Linuxのtopコマンドは、システムのリソース使用状況をリアルタイムで監視するための基本ツールです。
シンプルなコマンドですが、多くのオプションがあり、目的に応じて使い分けることで効率的にサーバーの状態を把握できます。
本章では、topコマンドの実行方法、主要なオプション、プロセスの状態を確認する方法を解説します。
スポンサーリンクtopコマンドの実行方法
topコマンドは、Linuxのターミナルで単純に top
と入力するだけ で使用できます。
$ top
このコマンドを実行すると、リアルタイムでリソースの使用状況が表示され、3秒ごとに更新されます。
終了するには、キーボードで q
を押す だけです。

topコマンドってどうやって止めるんですか?

q
を押せば終了できる。でも、Ctrl + C
でも止められるぞ。

画面が勝手に更新されるのを止めることはできますか?

Ctrl + S
で一時停止、Ctrl + Q
で再開できる。

topコマンドの基本オプション一覧
topコマンドには、多くのオプションがあり、用途に応じて出力をカスタマイズできます。
ここでは、よく使われる主要なオプション を紹介します。
オプション | 説明 |
---|---|
-d 秒数 | 更新間隔を変更(例: top -d 5 で5秒ごとに更新) |
-n 回数 | 指定回数分だけ表示して終了(例: top -n 10 で10回更新後に終了) |
-b | バッチモードで出力(ログに記録する際に便利) |
-o 項目 | 並び順を変更(例: top -o %CPU でCPU使用率順にソート) |
-u ユーザー名 | 指定ユーザーのプロセスのみ表示 |

更新間隔を変えたいんですが、どうすればいいですか?

top -d 5
みたいに -d
オプションを使えばいい。実行中なら s
を押して秒数を入力しても変更できる。

topの結果を保存しておきたいのですが?

バッチモード -b
を使って top -b -n 10 > top_log.txt
みたいにすれば、出力をファイルに保存できる。

プロセス情報の見方
topコマンドの出力のプロセス一覧部分には、以下のような情報が表示されます。
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2001 test 20 0 3007404 174564 59964 S 1.7 17.9 0:26.32 gnome-shell
項目 | 説明 |
---|---|
PID | プロセスID |
USER | プロセスの所有者 |
PR | 優先度 |
NI | Nice値(優先度の調整値) |
%CPU | CPU使用率 |
%MEM | メモリ使用率 |
TIME+ | 実行時間(CPU時間の合計) |
COMMAND | 実行されているコマンド |

CPU使用率の高いプロセスを特定する
CPU使用率が高いプロセスを特定するには、top
実行後に P
キー を押すと、CPU使用率順にソート できます。
$ top
(実行中に P を押す)

メモリ使用率の高いプロセスを特定する
メモリ消費の多いプロセスを調べるには、M
キー を押せば、メモリ使用率順に並び替え できます。
$ top
(実行中に M を押す)

特定のプロセスを検索する
特定のプロセスを検索するには、o
キー を押して検索条件を入力します。
例えば、特定のユーザーのプロセスを表示したい場合は、以下のように入力します。
oキーを押下
USER=test

特定のプロセスだけを探したいんですが?

o
を押して条件を入力すればフィルタリングできる。例えば COMMAND=nginx
って入力するとnginx関連のプロセスだけ表示される。

CPU使用率が高いプロセスだけ表示する方法はありますか?

top
の実行中に P
を押せば、CPU使用率の高い順に並ぶ。
まとめ
topコマンドを使うと、システム全体の負荷状況やプロセスごとのリソース消費をリアルタイムで監視 できます。
基本的なオプションを活用し、必要な情報を素早く取得できるようになりましょう。
次の章では、topコマンドの出力項目の詳細 について解説します。

topコマンドの出力項目の詳細解説
topコマンドは、CPU、メモリ、スワップ領域などのシステムリソースをリアルタイムで監視できるツールです。
ここでは、出力される主要な項目の意味と、リソースの使用状況をどのように解釈すればよいのか を解説します。
CPUの使用率をチェックする
topコマンドを実行すると、CPUの使用率は%Cpu(s)
の行に表示 されます。
%Cpu(s): 1.4 us, 1.0 sy, 0.0 ni, 97.3 id, 0.3 wa, 0.0 hi, 0.0 si, 0.0 st
各項目の意味は以下の通りです。
項目 | 説明 |
---|---|
us | ユーザープロセス(アプリケーション)が使用しているCPU割合 |
sy | カーネル(システムプロセス)が使用しているCPU割合 |
ni | 優先度を変更されたプロセスが使用しているCPU割合 |
id | アイドル状態(未使用)のCPU割合 |
wa | I/O待ちの時間(ディスク読み書きによるCPU待機) |
hi | ハードウェア割り込み処理時間 |
si | ソフトウェア割り込み処理時間 |
st | 仮想環境でホストOSによって奪われたCPU時間 |
CPU負荷が高い場合、特に us
や sy
の値が大きくなっているかを確認 しましょう。
また、wa
(I/O待ち)の数値が高いと、ディスクI/Oがボトルネックになっている可能性 があります。

us
と sy
は何が違うんですか?

us
はアプリケーションがCPUを使っている時間、sy
はカーネルが使っている時間だ。sy
が高すぎるとカーネルの負荷が大きくなっている可能性がある。

wa
が高いと何が問題なんですか?

ディスクI/O待ちが発生している。ストレージの負荷が高いか、スワップが多すぎる場合がある。

メモリ使用状況の確認
topコマンドでは、メモリの使用状況は以下のように表示されます。
KiB Mem : 976856 total, 70600 free, 712820 used, 193436 buff/cache
KiB Swap: 2098172 total, 2089980 free, 8192 used. 102368 avail Mem
項目 | 説明 |
---|---|
total | 総メモリ容量 |
free | 未使用メモリ |
used | 使用中のメモリ |
buff/cache | バッファ・キャッシュとして利用されているメモリ |
avail Mem | すぐに使用できるメモリ量 |
free
の値が低くても、すぐにメモリ不足になるとは限りません。
Linuxは使用していないメモリをキャッシュとして確保するため、buff/cache
を含めた avail Mem
の値を確認することが重要です。

free
の値が少ないんですが、大丈夫ですか?

Linuxはメモリを効率的に使うから、キャッシュに回してることが多い。avail Mem
の値を見れば本当に使えるメモリがわかる。

buff/cache
は削除できるんですか?

キャッシュはシステムが自動管理するが、手動でクリアしたいなら sync; echo 3 > /proc/sys/vm/drop_caches
を実行すればリセットできる。ただし、頻繁にクリアするのは推奨されない。

スワップ領域の監視
スワップ領域(Swap)は、物理メモリが不足したときにディスクを仮想メモリとして使用する機能です。
topコマンドでは、スワップの使用状況は以下のように表示されます。
KiB Swap: 2098172 total, 2089980 free, 8192 used. 102368 avail Mem
項目 | 説明 |
---|---|
total | スワップ領域の総容量 |
free | 未使用のスワップ領域 |
used | 使用中のスワップ領域 |
avail Mem | 実際に使用可能なメモリ量 |
スワップの使用量 (used
) が増えると、ディスクアクセスが増えてシステムが極端に遅くなることがあります。
スワップの使用率が高い場合は、メモリの使用状況を見直し、不要なプロセスを終了する ことを検討しましょう。

スワップが増えると、どうしてシステムが遅くなるんですか?

スワップはディスクを仮想メモリとして使うから、RAMよりアクセス速度が圧倒的に遅い。だからスワップが増えると、アプリの動作が重くなる。

スワップを減らす方法はありますか?

不要なプロセスを終了するか、swapoff -a
で一時的にスワップを無効にできる。でも、メモリ不足だとすぐにクラッシュするから注意。

まとめ
topコマンドの出力を理解すれば、CPUやメモリ、スワップの使用状況を正しく把握し、
システムのボトルネックを特定することができます。
- CPU使用率 (
%Cpu(s)
) はus
やsy
を確認し、負荷の原因を特定する - メモリ (
KiB Mem
) はavail Mem
を確認し、実際に使用可能な量を把握する - スワップ (
KiB Swap
) はused
の増加に注意し、不要なプロセスを終了する
topコマンドの応用テクニック
topコマンドを活用すれば、特定のプロセスをフィルタリングしたり、並び替えたり、バッチモードで実行したりすることができます。
これらの機能を使いこなすことで、大量のプロセスの中から必要な情報を素早く取得し、効率的にシステムの状態を把握 できます。
- 特定のユーザーのプロセスを表示する
- 実行中のプロセスのみを表示する
- 特定のプロセスを検索する
- CPU使用率順に並び替える
- メモリ使用率順に並び替える
- プロセスの実行時間順に並び替える
- カスタム並び替え
- topの結果をファイルに保存する
- topのデータを解析する
- 定期的にtopの情報を取得する
- まとめ

特定のユーザーのプロセスを表示する
特定のユーザーのプロセスのみを表示するには、-u
オプション を使用します。
$ top -u username
例えば、root
ユーザーのプロセスのみを表示する場合は以下のようにします。
$ top -u root
実行中のプロセスのみを表示する
アイドル状態のプロセスを除外し、実行中のプロセスのみを表示したい場合は、i
キー を押します。
(top 実行中に i を押す)
特定のプロセスを検索する
プロセス一覧から特定のコマンドを検索するには、o
キーを押して条件を指定 します。
例えば、nginx
に関連するプロセスのみ表示する場合は、top実行後に以下を入力します。
oキーを押下
COMMAND=nginx

特定のユーザーのプロセスだけ見たいんですが?

top -u ユーザー名
で表示できる。実行中なら o
を押して USER=ユーザー名
を入力してもOK。

不要なプロセスを除いて、実行中のものだけ表示できますか?

i
を押せば、アイドル状態のプロセスを非表示にできる。
CPU使用率順に並び替える
CPUの使用率が高いプロセス順に並び替えるには、top実行中に P
キー を押します。
(top 実行中に P を押す)

メモリ使用率順に並び替える
メモリを多く消費しているプロセス順に並び替えるには、M
キー を押します。
(top 実行中に M を押す)
プロセスの実行時間順に並び替える
長時間実行されているプロセス順に並び替えたい場合は、T
キー を押します。
(top 実行中に T を押す)
カスタム並び替え
-o
オプションを使用すると、指定した項目で並び替えができます。例えば、メモリ使用率順に表示したい場合 は以下のようにします。
$ top -o %MEM

CPU負荷の高いプロセスをすぐに見つける方法は?

P
を押せばCPU使用率順に並び替えられる。

メモリをたくさん使っているプロセスを知りたいです。

M
を押せば、メモリ使用率の高い順に表示できる。
topの結果をファイルに保存する
以下のコマンドで、topの結果をファイルに保存 できます。
$ top -b -n 5 > top_output.txt
このコマンドでは、5回分のtopコマンドの出力を top_output.txt
に記録 します。

topのデータを解析する
バッチモードで取得したデータは、grepやawkなどのコマンドと組み合わせて解析できます。
$ top -b -n 1 | grep "nginx"
このコマンドは、topの出力から nginx
に関連するプロセスのみを抽出します。

定期的にtopの情報を取得する
cronジョブを設定すれば、定期的にtopの情報を取得できます。
例えば、1分ごとにtopの結果を保存するには、以下の設定を crontab -e
で追加します。
* * * * * top -b -n 1 >> /var/log/top.log

topの情報をファイルに保存したいんですが?

top -b -n 5 > top_output.txt
で、5回分のデータを記録できる。

特定のプロセスだけ記録できますか?

top -b -n 1 | grep nginx
で、nginxに関連するプロセスだけ抽出できる。

まとめ
topコマンドの応用テクニックを使うと、特定のプロセスを絞り込んだり、並び替えたり、ログとして保存 できます。
-u
オプションでユーザーを指定、o
キーでフィルタリングP
(CPU使用率)、M
(メモリ使用率)、T
(実行時間)で並び替え-b
オプションでログを保存し、定期的な監視に活用

【参考】topコマンドの全オプション一覧
オプション | 説明 |
---|---|
-b, --batch | バッチモードで実行。ユーザー入力を受け付けず、指定回数 (-n) 実行後に終了。ログ記録やスクリプトでの利用に便利。 |
-c, --cmdline-toggle | プログラム名とコマンドライン引数の表示を切り替える (c キーと同じ効果)。 |
-d, --delay=秒数 | 画面更新の間隔を指定(小数も指定可能)。デフォルト設定を上書きできる (d キーでも変更可能)。 |
`-E, --scale-summary-mem=k | m |
`-e, --scale-task-mem=k | m |
-H, --threads-show | 各スレッドを個別に表示(デフォルトではプロセス単位で集計表示)。 |
-h, --help | ヘルプを表示して終了。 |
-i, --idle-toggle | CPUを使用していないプロセスを非表示にする (i キーと同じ効果)。 |
-n, --iterations=回数 | 指定した回数だけ更新を実行し、その後自動終了。 |
-O, --list-fields | 使用可能なフィールド名を一覧表示し、終了。 |
-o, --sort-override=フィールド名 | プロセス一覧のソート順を変更。+ で降順、- で昇順に設定可能。 |
-p, --pid=PIDリスト | 指定したPIDのプロセスのみ表示(最大20個のPIDを指定可能)。 |
-S, --accum-time-toggle | プロセスの累積CPU時間を表示 (S キーと同じ効果)。 |
-s, --secure-mode | セキュアモードで実行(ルートユーザーでも設定変更不可)。 |
-U, --filter-any-user=ユーザー名/ID | 指定したユーザーのプロセスのみ表示(実ユーザー、効果ユーザーなどすべてのユーザーIDにマッチ)。 |
-u, --filter-only-euser=ユーザー名/ID | 指定した 実行ユーザー(EUID) のプロセスのみ表示。 |
-V, --version | バージョン情報を表示し、終了。 |
-w, --width[=列数] | 出力の横幅を調整(最大512列まで)。環境変数 COLUMNS を利用可能。 |
-1, --single-cpu-toggle | CPUコアごとの使用状況を個別表示 (1 キーと同じ効果)。 |

ゴリタン
インフラエンジニアとして、ネットワークとサーバーの運用・保守・構築・設計に幅広く携わり、
現在は大規模政府公共データの移行プロジェクトを担当。
CCNPやLPICレベル3、AWSセキュリティスペシャリストなどの資格を保有しています。