Linuxのtopコマンドの使い方(および出力内容の理解)

  • Linuxのtopコマンドは、システムのパフォーマンスと実行中のプロセスに関する重要な情報を提供する貴重なユーティリティです。
  • topは一見複雑ですが、ユーザーにとって関連性のある情報だけを表示するようにカスタマイズできます。
  • Topは、さまざまなキーボードショートカットや、色、強調表示、グラフなどのオプション機能をサポートしており、表示される情報の可読性を高めています。

Linuxのtopコマンドは、Unix系オペレーティングシステムの主力の一つです。その実用的な表示には、システムの実行中のプロセスとリソースの使用に関する有用な情報が満載されています。しかし、色、強調表示、基本的なグラフもサポートされていることをご存知ですか?

情報満載のダッシュボード

topコマンドは1984年から存在しており、さまざまなバリエーションがあります。この記事では、すべてのパッチを適用したUbuntu 18.04と、topのバージョン3.3.12を使用しています。Ubuntu 23.04の時点で、ほとんど変更されていません。また、FedoraとManjaroを実行している2台のテストコンピュータでもすべてを相互参照しました。

デフォルトのtop表示では、可能な限り多くの情報をターミナルウィンドウに詰め込みます。情報は管理の前提条件なので、これは良いことです。優れたシステム管理者の特徴の一つは、問題が発生する前にそれを特定し、サービスに影響を与える前に対処できることです。topは、まさにそのために役立つさまざまなシステムメトリックのダッシュボードを提供します。

この表示は直感的なというよりも機能的であり、略語が多数使用されています。topを初めて使用すると、窮屈で、難解で、不快に感じるかもしれません。しかし、キーを数回押すだけで、表示する内容と形式を自分に必要なものに合わせて調整できます。

topのバージョンを確認する

使用しているtopのバージョンを確認するには、ターミナルウィンドウに次のように入力します。

top -v

使用しているバージョンが3.3.12よりかなり古い場合、この記事で取り上げるすべての機能がサポートされていない可能性があります。

デフォルトの表示

topは、次のように入力して「Enter」キーを押すと開始できます。

top

デフォルトの表示には、サマリー領域(またはダッシュボード)とタスク領域(またはプロセスリスト)の2つの情報領域があります。デフォルトでは、topは3秒ごとに表示を更新します。更新されるとわずかにちらつきます。

ダッシュボードの最初の行には、時刻、コンピュータの稼働時間、ログインしている人の数、過去1分、5分、15分のロードアベレージが含まれています。2行目には、タスクの数とその状態(実行中、停止中、スリープ中、ゾンビ)が表示されます。

3行目には、次のCPU(中央処理装置)の値が表示されます。

  • us: CPUが「ユーザー空間」の人々のプロセスを実行するために費やす時間。
  • sy: システムの「カーネル空間」プロセスを実行するために費やす時間。
  • ni: 手動で設定されたnice値を持つプロセスを実行するために費やす時間。
  • id: CPUのアイドル時間。
  • wa: CPUが入出力の完了を待機するために費やす時間。
  • hi: ハードウェア割り込みの処理に費やす時間。
  • si: ソフトウェア割り込みの処理に費やす時間。
  • st: 仮想マシンの実行による損失時間(「スティール時間」)。

4行目には、物理メモリの総量(キビバイト単位)と、空き容量、使用量、バッファまたはキャッシュされた容量が表示されます。

5行目には、スワップメモリの総量(キビバイト単位)と、空き容量、使用量、使用可能な容量が表示されます。後者には、キャッシュから回復できると予想されるメモリが含まれます。

プロセスリストの列見出しは次のとおりです。

  • PID: プロセスID。
  • USER: プロセスの所有者。
  • PR: プロセスの優先順位。
  • NI: プロセスのnice値。
  • VIRT: プロセスが使用する仮想メモリの量。
  • RES: プロセスが使用する常駐メモリの量。
  • SHR: プロセスが使用する共有メモリの量。
  • S: プロセスの状態。(このフィールドが取り得る値については、以下のリストを参照してください)。
  • %CPU: プロセスが前回の更新以降に使用したCPU時間の割合。
  • %MEM: 使用された物理メモリの割合。
  • TIME+: タスクが使用した合計CPU時間(100分の1秒単位)。
  • COMMAND: コマンド名またはコマンドライン(名前+オプション)。

メモリ値はキビバイト単位で表示されます。COMMAND列は、右側の画面外にあります。上の画像には収まりませんでしたが、すぐにわかります。

プロセスの状態は、次のいずれかになります。

  • D: 中断不能スリープ
  • R: 実行中
  • S:スリープ中
  • T:トレース(停止中)
  • Z:ゾンビ

Qを押すとtopを終了できます。

表示のスクロール

上下矢印、ホーム、エンド、ページアップまたはページダウンキーを押すと、上下に移動してすべてのプロセスにアクセスできます。

左右矢印を押すと、プロセスリストを横に移動します。これは、ターミナルウィンドウの範囲に収まらない列を表示する場合に便利です。

以下の画像では、右矢印を数回押してCOMMAND列を表示しました。

数値単位の変更

表示単位を適切な値に変更してみましょう。大文字のEを押すと、メモリ値の表示に使用される単位が、キビバイト、メビバイト、ギビバイト、テビバイト、ペビバイト、エクスビバイトの順に切り替わります。使用中の単位は、4行目と5行目の最初の項目です。

小文字の「e」を押すと、プロセスリストの値に対して同じ操作を行うことができます。単位は、キビバイト、メビバイト、ギビバイト、テビバイト、ペビバイトです。

Eを押してダッシュボードのメモリ単位をギビバイトに設定し、「e」を押してプロセスリストのメモリ単位をメビバイトに設定しました。

サマリー内容の変更

ダッシュボードの行の表示設定を変更したり、完全に削除したりすることができます。

lを押すと、ロードサマリー行(1行目)のオンとオフを切り替えることができます。下の画像では、ロードサマリー行を削除しました。

マルチコアCPUを使用している場合は、1を押して表示を切り替え、各CPUの個別の統計情報を表示します。コンピュータには4つのCPUがあります。1を押して、各CPUの負荷状況を確認します。

もちろん、ターミナルウィンドウ内の画面領域を多く消費します。

「t」を押すと、CPUの表示を、各CPUの使用率を示すシンプルなASCIIグラフに切り替えることができます。

topは、各CPUについて、3つの数値とグラフを表示します。左から右に、数値は以下のようになります。

  • usniのパーセンテージを組み合わせたもの(ユーザー空間+非標準のnice設定を持つタスク)。
  • syのパーセンテージ(カーネル空間)。
  • 合計値(整数値に四捨五入)。

「t」をもう一度押すと、グラフの表示を塗りつぶしたブロック文字に変更します。

「t」をもう一度押すと、CPUの表示とタスクサマリー行を完全に削除します。

「m」を押すと、メモリとスワップメモリの行をさまざまな表示オプションで切り替えることができます。最初に押すと、統計情報がASCIIグラフに置き換えられます。

もう一度押すと、グラフがブロック文字に変わります。

「m」をもう一度押すと、CPUの行をすべて削除します。

CPUとメモリのグラフを同時に表示することもできます。「t」と「m」を組み合わせて、目的の組み合わせになるまで押すだけです。

色と強調表示

「z」を押すと、表示に色を追加できます。

topを思い浮かべると、色付きの表示やASCIIグラフを思い浮かべる人は少ないかもしれませんが、これらは標準で組み込まれています。

「y」を押すと、プロセスリストの実行中のタスクを強調表示します。「x」を押すと、プロセスリストのソートに使用されている列が強調表示されます。「b」を押すと、太字と反転テキストの強調表示を切り替えることができます。

列によるソート

デフォルトでは、プロセスリストは%CPU列でソートされます。次のキーを押すと、ソート列を変更できます。

  • P:%CPU列。
  • M:%MEM列。
  • N:PID列。
  • T:TIME+列。

以下の画像では、プロセスリストはPID列でソートされています。

完全なコマンドラインを見る

「c」を押すと、COMMAND列でプロセス名と完全なコマンドラインの表示を切り替えます。

他のプロセスによって起動または生成されたプロセスの「ツリー」を見るには、Vを押します。

単一ユーザーのプロセスを見る

「u」を押して、単一ユーザーのプロセスを表示します。名前またはUIDの入力を求められます。

監視する人物の名前またはUIDを入力します。「dave」と入力して「Enter」キーを押します。これで、タスク領域にあるプロセスはすべてユーザーdaveに属します。

アクティブなタスクのみを見る

Iを押して、アクティブなタスクのみを表示します。

前回の更新以降、CPUを消費していないタスクは表示されません。

表示するプロセスの数を設定する

「n」を押して、タスクがアクティブかどうかを問わず、表示を特定の行数に制限します。表示するプロセスの数を入力するよう求められます。

10と入力してEnterキーを押すと、タスク領域に10のプロセスが表示されます。

プロセスの優先順位を変更する

「r」を押して、プロセスのnice値(優先順位)を変更できます。プロセスのIDを入力するよう求められます。Enterキーを押すだけで、プロセスウィンドウの一番上のタスクのプロセスIDを使用できます。FirefoxのインスタンスのプロセスIDである7800と入力します。

Enterキーを押すと、プロセスに適用する新しいnice値を入力するよう求められます。15と入力してEnterキーを押します。

新しいnice値はすぐにプロセスに適用されます。

topでプロセスを強制終了する

「k」を押して、プロセスを強制終了します。強制終了したいプロセスのIDを入力するよう求められます。実際には、プロセスに任意のシグナルを送信できます。応答しなくなったプロセス7879を強制終了します。

送信するシグナルを入力する機会が与えられます。名前または番号で指定できます。Enterキーを単に押すと、topSIGTERM(強制終了)シグナルを送信します。

Enterキーを押すとすぐに、シグナルがプロセスに送信されます。

表示のカスタマイズ

表示される色と列をカスタマイズすることもできます。プロンプトに使用される色を変更します。デフォルトは赤です。

大文字のZを押して、色の設定ページに移動します。画面の上部には、さまざまな表示要素で使用されている色が表示されます。変更する表示要素を指定するには、次のいずれかを押します。これらは大文字と小文字が区別されます。

  • S: サマリーデータ領域。
  • M: メッセージとプロンプト。
  • H: 列見出し。
  • T: プロセスリストのタスク情報。

Mを押してプロンプトを変更します。

色を選択するには、次のいずれかの数字を押します。

  • 0:黒。
  • 1:赤。
  • 2:緑。
  • 3:黄色。
  • 4:青。
  • 5:マゼンタ。
  • 6:シアン。
  • 7:白。

6を押してシアンを使用します。

Enterキーを押して設定を保存します。入力のプロンプトは、選択した色になります。

また、フィールド管理画面で表示される列を変更することもできます。Fを押してフィールド管理画面に入ります。

表示されているフィールドにはアスタリスク(*)が横にあり、太字で強調表示されます。上下矢印を押して、フィールドのリストを移動して強調表示します。

列の一番下から強調表示を移動すると、次の列の一番上に表示されます(最後の列の一番下でない場合)。一番上から強調表示を移動すると、前の列の一番下に表示されます(最初の列の一番上でない場合)。

強調表示をCOMMANDエントリに移動し、「d」を押してアスタリスク(*)を削除しました。次に、UIDエントリに移動し、「d」を押してそのエントリの横にアスタリスクを配置しました。これは、COMMAND列は表示されず、UID列は表示されることを意味します。

UID列に強調表示がある状態で、「s」を押してUID列でプロセスリストをソートします。

Enterキーを押して設定を保存し、「q」を押してフィールド管理画面を終了します。

UID列がCOMMAND列に置き換えられ、プロセスリストはそれによってソートされています。

代替表示モード

これはフルスクリーンモードで最適に機能します。Aを押してプロセスリストに4つの領域を表示し、「a」を押して領域間を移動します。

各領域には異なる列の集合がありますが、それぞれをフィールド管理画面でカスタマイズすることもできます。これにより、各領域に異なる情報を表示するフルスクリーンのカスタマイズされた表示が可能になり、各領域を異なる列でソートすることができます。

その他のキーストローク

topで役立つと思われる他のキーを以下に示します。

  • W: 設定とカスタマイズを保存して、次回topを起動したときにも有効にします。
  • d: 新しい表示リフレッシュレートを設定します。
  • Space: topに表示をすぐにリフレッシュさせます。

Topの代替手段はあるか?

これまで見てきたように、topにはかなりのレパートリーがあります。ただし、何か別のものを探している場合は、他にも選択肢があります。ユーティリティhtopはおそらく最も一般的で人気のあるtopの代替手段でしょう。軽量なので、topを使ったことがある人ならすぐに使い慣れるでしょう。また、すぐに色が適用されており、読みやすくなっています。また、下部にコントロールがうまく説明されています。

topの大きな利点は、その普遍性にあります。topはあらゆる場所にインストールされています。ネットワークやサーバーを見るために企業を訪れると、稼働中のサーバーでは絶対に何も変更できないと言われることがよくあります。クライアントがルールを決めているので、すでにインストールされているものを使用する必要があります。

別の監視ツールを好む場合でも、topを知るべきです。遅かれ早かれ、アクセスできるのがそれだけの状況に陥る可能性があります。