こんにちは、たねやつです。
このシリーズでは、Linuxの基本的なコマンドを一つずつ取り上げ、その使い方を具体的な例とともに解説していきます。今回は、システムのプロセスをリアルタイムで動的に表示するtopコマンドです。
topコマンドとは?
topコマンドは、psコマンドのようにプロセスの情報を表示しますが、一度表示して終わるのではなく、デフォルトで数秒おきに情報を更新し続けます。これにより、現在どのプロセスがCPUやメモリを最も消費しているかをリアルタイムで監視することができます。システムのパフォーマンスに問題がある場合の、原因調査の入り口として非常に役立ちます。
topの画面の見方
topを起動すると、画面は大きく2つのエリアに分かれています。
サマリーエリア(上部):
- システムの稼働時間(
uptime)、ログインユーザー数、ロードアベレージ(load average) - タスク(プロセス)の総数と状態(実行中、スリープ中など)
- CPU使用率の内訳(ユーザー、システム、アイドルなど)
- 物理メモリ(RAM)とスワップメモリの使用状況
- システムの稼働時間(
プロセスリストエリア(下部):
PID: プロセスIDUSER: 実行ユーザー名PR: 優先度NI: Nice値VIRT: 仮想メモリ使用量RES: 物理メモリ使用量SHR: 共有メモリ使用量S: プロセス状態%CPU: CPU使用率%MEM: 物理メモリ使用率TIME+: 合計CPU時間COMMAND: コマンド名
主な操作キー
topの実行中は、以下のキーボードショートカットで操作します。
| キー | 説明 |
|---|---|
q |
topを終了します。 |
h |
ヘルプ画面を表示します。 |
M |
メモリ使用率(%MEM)でプロセスでソートします。 |
P |
CPU使用率(%CPU)でプロセスをソートします(デフォルト)。 |
T |
CPU時間(TIME+)でプロセスをソートします。 |
k |
プロセスをkill(終了)させます。PIDの入力を求められます。 |
u |
特定のユーザーのプロセスのみを表示します。ユーザー名の入力を求められます。 |
1 |
CPUごとの使用率表示をトグルします(マルチコアCPUの場合)。 |
z |
表示をカラーにするか白黒にするかをトグルします。 |
具体的な使用例
状況1: システム全体のパフォーマンスをざっと確認したい
システムの動作がなんとなく重いと感じた時に、まず最初に状況を確認する場面です。
top
コマンドを実行すると、リアルタイムのプロセス一覧が表示されます。%CPUや%MEMが高いプロセスがないか、ロードアベレージが異常に高くないかなどを確認します。
状況2: メモリを最も消費しているプロセスを特定したい
システムのメモリが圧迫されている疑いがあるため、どのプロセスがメモリを大量に使っているのかを調べたい場面です。
topを起動します。- 大文字の
Mキーを押します。
プロセスリストが%MEMの降順(多い順)でソートされ、メモリ消費の激しいプロセスを簡単に見つけることができます。
状況3: 暴走しているプロセスを強制終了したい
特定のプロセス(例: PIDが12345)がCPUを100%消費し続けており、システムに悪影響を与えているため、強制的に終了させたい場面です。
topを起動します。kキーを押します。PID to signal/kill [default pid = xxxx]と表示されたら、対象のPID12345を入力してEnterキーを押します。Send pid 12345 signal [15/sigterm]と表示されたら、そのままEnterキーを押します(デフォルトのシグナル15で終了を試みます)。
これでプロセスが終了します。もしシグナル15で終了しない場合は、再度kキーを押し、シグナルとして9 (SIGKILL) を指定することで、より強制的に終了させることができます。
最後に
今回はtopコマンドについて解説しました。リアルタイムでシステムの「健康状態」を監視するための必須ツールです。CPUやメモリの使用状況でソートするキー(P, M)や、プロセスを終了させるkキーを覚えておくだけで、基本的なトラブルシューティングが可能になります。より高機能で視覚的に分かりやすいhtopというコマンドも人気があります。