GNU/Linux >> Linux の 問題 >  >> Linux

Linuxの「トップ」コマンドのガイド

top コマンドを使用すると、ユーザーは Linux でプロセスとシステム リソースの使用状況を監視できます。これは、システム管理者のツールボックスの中で最も便利なツールの 1 つであり、すべてのディストリビューションにプリインストールされています。 ps などの他のコマンドとは異なります 、インタラクティブで、プロセスのリストを参照したり、プロセスを強制終了したりできます。

この記事では、top コマンドの使用方法を理解します。

目次

  • 1 はじめに
  • 2 top のインターフェースを理解する:概要エリア

    • 2.1 システム時間、稼働時間、ユーザー セッション
    • 2.2 メモリ使用量
    • 2.3 タスク
    • 2.4 CPU 使用率
    • 2.5 負荷平均
  • 3 top のインターフェースを理解する:タスク領域
  • 4 つのコマンド使用例

    • 4.1 プロセスの強制終了
    • 4.2 プロセス リストの並べ替え
    • 4.3 プロセスではなくスレッドのリストを表示する
    • 4.4 フルパスの表示
    • 4.5 フォレスト ビュー
    • 4.6 ユーザーからのプロセスの一覧表示
    • 4.7 プロセスによるフィルタリング
    • 4.8 CPU およびメモリ統計のデフォルトの外観の変更
    • 4.9 設定の保存
  • 5 まとめ

はじめに

すでにお察しのとおり、top を起動するには次のように入力するだけです:

top

これにより、下のスクリーンショットのような対話型コマンド ライン アプリケーションが起動します。出力の上半分にはプロセスとリソースの使用状況に関する統計が含まれ、下半分には現在実行中のプロセスのリストが含まれます。矢印キーと Page Up/Down キーを使用して、リストを参照できます。終了する場合は、単に「q」を押してください。

top にはさまざまなバリエーションがありますが、この記事の残りの部分では、最も一般的なバリエーション、つまり「procps-ng」パッケージに付属するものについて説明します。これを確認するには、次を実行します:

top -v

このバリアントがある場合、次のように出力に表示されます:

procps-ng version 3.3.10

top のインターフェースではかなりのことが行われているため、次のセクションで少しずつ詳しく説明します。

top のインターフェースを理解する:概要エリア

前に見たように、top の出力は 2 つの異なるセクションに分かれています。記事のこの部分では、出力の半分の要素に焦点を当てます。この領域は「要約領域」とも呼ばれます。

システム時間、稼働時間、ユーザー セッション

画面の左上 (上のスクリーンショットでマークされているように) には、現在の時刻が表示されます。これに続いて、システム稼働時間が続きます。これは、システムが稼働している時間を示します。たとえば、この例では、現在の時刻は「15:39:37」で、システムは 90 日と 15 時間 26 分稼働しています。

次は、アクティブなユーザー セッションの数です。この例では、2 つのアクティブなユーザー セッションがあります。これらのセッションは、TTY (物理的にはシステム上で、コマンド ラインまたはデスクトップ環境を介して) または PTY (ターミナル エミュレータ ウィンドウまたは SSH 経由など) で作成できます。実際、デスクトップ環境を介して Linux システムにログインし、ターミナル エミュレーターを起動すると、2 つのアクティブなセッションが存在することがわかります。

アクティブなユーザー セッションの詳細を知りたい場合は、who を使用します。 コマンド。

メモリ使用量



「メモリ」セクションには、システムのメモリ使用量に関する情報が表示されます。 「Mem」と「Swap」とマークされた行は、それぞれ RAM とスワップ領域に関する情報を示します。簡単に言えば、スワップ領域は、RAM のように使用されるハードディスクの一部です。 RAM の使用量がほぼいっぱいになると、RAM の使用頻度の低い領域がスワップ領域に書き込まれ、後で必要なときに取得できるようになります。ただし、ディスクへのアクセスは遅いため、スワッピングに頼りすぎると、システムのパフォーマンスが低下する可能性があります。

当然のことながら、「total」、「free」、「used」の値には通常の意味があります。 「avail mem」値は、スワッピングを発生させずにプロセスに割り当てることができるメモリの量です。

Linux カーネルはまた、さまざまな方法でディスク アクセス時間を短縮しようとします。ディスクの頻繁に使用される領域が格納される RAM に「ディスク キャッシュ」を維持します。さらに、ディスクへの書き込みは「ディスク バッファ」に保存され、カーネルは最終的にそれらをディスクに書き込みます。それらによって消費される合計メモリは、「buff/cache」値です。悪いことのように聞こえるかもしれませんが、実際にはそうではありません。キャッシュによって使用されるメモリは、必要に応じてプロセスに割り当てられます。

タスク

「タスク」セクションには、システムで実行されているプロセスに関する統計が表示されます。 「合計」値は、単純にプロセスの合計数です。たとえば、上のスクリーンショットでは、27 個のプロセスが実行されています。残りの値を理解するには、Linux カーネルがプロセスを処理する方法についての背景知識が少し必要です。

プロセスは、I/O バウンドの作業 (ディスクの読み取りなど) と CPU バウンドの作業 (算術演算の実行など) を組み合わせて実行します。プロセスが I/O を実行している間、CPU はアイドル状態になるため、OS はこの間に他のプロセスの実行に切り替えます。さらに、OS は特定のプロセスを非常に短い時間実行することを許可し、その後、別のプロセスに切り替えます。これは、OS が「マルチタスク」であるかのように見える方法です。これらすべてを行うには、プロセスの「状態」を追跡する必要があります。 Linux では、プロセスは次の状態になる可能性があります:

  • 実行可能 (R):この状態のプロセスは、CPU 上で実行されているか、実行キューに存在し、実行の準備ができています。
  • 中断可能なスリープ (S):この状態のプロセスは、イベントの完了を待機しています。
  • 割り込み不可能なスリープ (D):この場合、プロセスは I/O 操作が完了するのを待っています。
  • 停止 (T):これらのプロセスは、ジョブ制御信号 (Ctrl+Z の押下など) によって、またはトレースされているために停止されました。
  • ゾンビ (Z):カーネルは、さまざまなデータ構造をメモリ内に維持して、プロセスを追跡します。プロセスは多数の子プロセスを作成する場合があり、親がまだ存在している間に終了する場合があります。ただし、これらのデータ構造は、親プロセスが子プロセスのステータスを取得するまで保持する必要があります。このように終了し、データ構造が残っているプロセスはゾンビと呼ばれます。

D および S 状態のプロセスは「スリープ」で示され、T 状態のプロセスは「停止」で示されます。ゾンビの数は「ゾンビ」値として表示されます。

CPU 使用率

CPU 使用率セクションには、さまざまなタスクに費やされた CPU 時間の割合が表示されます。 us value は、CPU がユーザー空間でプロセスを実行するのに費やす時間です。同様に、sy value は、カーネル空間プロセスの実行に費やされた時間です。

Linux は、プロセスの優先度を決定するために「nice」値を使用します。 「nice」値が高いプロセスは、他のプロセスに対して「より適切」であり、優先度が低くなります。同様に、「nice」が低いプロセスほど優先度が高くなります。後で見るように、デフォルトの「nice」値は変更できます。手動で「nice」を設定したプロセスの実行に費やされた時間は、ni として表示されます。

この後に id が続きます 、これは CPU がアイドル状態のままである時間です。ほとんどのオペレーティング システムは、アイドル状態のときに CPU を省電力モードにします。次は wa です CPU が I/O の完了を待機するのに費やす時間です。

割り込みは、即時の注意が必要なイベントに関するプロセッサへの信号です。ハードウェア割り込みは通常、キーボードのキー押下などのイベントについてシステムに通知するために周辺機器によって使用されます。一方、ソフトウェア割り込みは、プロセッサ上で実行される特定の命令によって生成されます。いずれの場合も、OS がそれらを処理し、ハードウェアとソフトウェアの割り込みの処理に費やされた時間は hi で与えられます。 および si

仮想化環境では、CPU リソースの一部が各仮想マシン (VM) に割り当てられます。 OS は、実行する作業があることを検出しますが、CPU が他の VM でビジーであるため、それらを実行できません。このようにして失われた時間は、st として示される「スチール」時間です。 .

負荷平均

負荷平均セクションは、1 分、5 分、および 15 分間の平均「負荷」を表します。 「負荷」は、システムが実行する計算作業量の尺度です。 Linux では、負荷は任意の時点で R および D 状態にあるプロセスの数です。 「負荷平均」値は、物事が完了するまでにどれくらい待たなければならないかの相対的な尺度を示します。



この概念を理解するために、いくつかの例を考えてみましょう。シングル コア システムでは、負荷平均 0.4 は、システムが実行できる作業の 40% しか実行していないことを意味します。負荷平均 1 は、システムがちょうど容量に達していることを意味します。システムは、少しでも作業を追加することで過負荷になります。負荷平均が 2.12 のシステムは、処理できるよりも 112% 多い作業によって過負荷になっていることを意味します。

マルチコア システムでは、最初に負荷平均を CPU コアの数で割り、同様の尺度を得る必要があります。

さらに、「負荷平均」は、実際にはほとんどの人が知っている典型的な「平均」ではありません。これは「指数移動平均」であり、以前の負荷平均のごく一部が現在の値に考慮されることを意味します。興味のある方は、この記事で技術的な詳細をすべて説明しています。

top のインターフェースを理解する:タスク領域

要約領域は比較的シンプルで、プロセスのリストが含まれています。このセクションでは、top のデフォルト出力に表示されるさまざまな列について学習します。

  • PID

これはプロセス ID で、プロセスを識別する一意の正の整数です。

  • ユーザー

これは、プロセスを開始したユーザーの「有効な」ユーザー名 (ユーザー ID にマップされる) です。 Linux は、実ユーザー ID と実効ユーザー ID をプロセスに割り当てます。後者は、プロセスが別のユーザーに代わって動作することを許可します。 (たとえば、root 以外のユーザーは、パッケージをインストールするために root に昇格できます。)

  • PR と NI

「NI」フィールドは、プロセスの「良い」値を示します。 「PR」フィールドは、カーネルの観点からのプロセスのスケジューリング優先度を示します。 nice 値はプロセスの優先度に影響します。

  • VIRT、RES、SHR、%MEM

これら 3 つのフィールドは、プロセスのメモリ消費に関連しています。 「VIRT」 は、プロセスによって消費されるメモリの総量です。これには、プログラムのコード、プロセスによってメモリに格納されたデータ、およびディスクにスワップされたメモリ領域が含まれます。 「RES」は RAM 内のプロセスによって消費されるメモリであり、「%MEM」はこの値を使用可能な合計 RAM のパーセンテージとして表します。最後に、「SHR」は他のプロセスと共有されるメモリの量です。

  • S

前に見たように、プロセスはさまざまな状態になる可能性があります。このフィールドは、プロセスの状態を 1 文字の形式で示します。

  • TIME+

これは、プロセスが開始してから使用した CPU 時間の合計で、100 分の 1 秒単位まで正確です。

  • コマンド

COMMAND 列にはプロセスの名前が表示されます。

コマンドの主な使用例

これまで、top のインターフェースについて説明してきました。ただし、プロセスを管理することもでき、top の出力のさまざまな側面を制御できます。このセクションでは、いくつかの例を取り上げます。

以下の例のほとんどでは、top の実行中にキーを押す必要があります。これらのキー入力では大文字と小文字が区別されることに注意してください。つまり、Caps Lock がオンのときに「k」を押すと、実際には「K」を押したことになり、コマンドが機能しないか、まったく別のことを実行します。

プロセスの強制終了

プロセスを強制終了するには、top の実行中に単に「k」を押します。これによりプロンプトが表示され、プロセスのプロセス ID を尋ねられ、Enter キーを押します。

次に、プロセスを強制終了するシグナルを入力します。これを空白のままにしておくと、top は SIGTERM を使用し、プロセスが正常に終了できるようにします。強制的にプロセスを強制終了したい場合は、ここで SIGKILL と入力できます。ここにシグナル番号を入力することもできます。たとえば、SIGTERM の数は 15 で、SIGKILL は 9 です。

プロセス ID を空白のままにして直接 Enter キーを押すと、リストの一番上のプロセスが終了します。前に述べたように、矢印キーを使用してスクロールし、この方法で強制終了するプロセスを変更できます。

プロセス リストの並べ替え

top のようなツールを使用する最も一般的な理由の 1 つは、どのプロセスが最も多くのリソースを消費しているかを調べることです。次のキーを押して、リストを並べ替えることができます:

  • メモリ使用量で並べ替えるには「M」
  • CPU 使用率で並べ替えるには「P」
  • プロセス ID でソートする場合は「N」
  • 'T' は実行時間で並べ替えます

デフォルトでは、top はすべての結果を降順で表示します。ただし、「R」を押すと昇順に切り替えることができます。

-o でリストをソートすることもできます スイッチ。たとえば、プロセスを CPU 使用率で並べ替えたい場合は、次のようにできます:

top -o %CPU

同様に、要約領域の任意の属性でリストを並べ替えることができます。

プロセスの代わりにスレッドのリストを表示する

Linux がプロセス間を切り替える方法については、以前に触れました。残念ながら、プロセスはメモリやその他のリソースを共有しないため、このような切り替えはかなり遅くなります。 Linux は、他の多くのオペレーティング システムと同様に、「スレッド」と呼ばれる「軽量」の代替手段をサポートしています。それらはプロセスの一部であり、メモリやその他のリソースの特定の領域を共有しますが、プロセスのように同時に実行できます。

デフォルトでは、top は出力にプロセスのリストを表示します。代わりにスレッドを一覧表示する場合は、top の実行中に「H」を押します。 「タスク」行には代わりに「スレッド」と表示され、プロセスではなくスレッドの数が表示されていることに注意してください。

プロセス リストのどの属性も変更されていないことに気付いたかもしれません。プロセスがスレッドと異なることを考えると、どうしてそれが可能なのでしょうか? Linux カーネル内では、スレッドとプロセスは同じデータ構造を使用して処理されます。したがって、すべてのスレッドには独自の ID や状態などがあります。

プロセス ビューに戻りたい場合は、もう一度「H」を押します。さらに、 -H を使用できます デフォルトでスレッドを表示するように切り替えます。

top -H

完全なパスを表示しています

デフォルトでは、top はプログラムへのフル パスを表示せず、カーネル空間プロセスとユーザー空間プロセスを区別しません。この情報が必要な場合は、top の実行中に「c」を押します。もう一度「c」を押すと、デフォルトに戻ります。

カーネルスペース プロセスは、角括弧で囲まれています。例として、上のスクリーンショットには 2 つのカーネル プロセス kthreadd があります。 と khelper .ほとんどの Linux のインストールでは、通常、さらにいくつかあります。

または、-c で top を開始することもできます 引数:

top -c

フォレスト ビュー

プロセスの親子階層を表示したい場合があります。これは、top の実行中に「v」/「V」を押すと、フォレスト ビューで確認できます。

上のスクリーンショットからわかるように、systemd プロセスは、システムで最初に起動したプロセスです。 sshd などのプロセスを開始しました 、順番に他の sshd を作成しました プロセスなど。

ユーザーからのプロセスの一覧表示

特定のユーザーのプロセスを一覧表示するには、top の実行中に「u」を押します。次に、ユーザー名を入力するか、空白のままにしてすべてのユーザーのプロセスを表示します。

または、-u を使用して top コマンドを実行することもできます スイッチ。この例では、root ユーザーからのすべてのプロセスを一覧表示しています。

top -u root

プロセスによるフィルタリング

処理するプロセスが多数ある場合、単純な並べ替えでは十分に機能しません。このような状況では、top のフィルタリングを使用して、いくつかのプロセスに焦点を当てることができます。このモードを有効にするには、「o」/「O」を押します。 top 内にプロンプ​​トが表示され、ここにフィルター式を入力できます。

フィルター式は、属性と値の間の関係を指定するステートメントです。フィルタの例:

  • COMMAND=getty :COMMAND 属性に「getty」を含むプロセスをフィルタリングします。
  • !COMMAND=getty :COMMAND 属性に「getty」がないプロセスをフィルタリングします。
  • %CPU>3.0 :CPU 使用率が 3% を超えるプロセスをフィルタリングします。

フィルターを追加したら、さらにフィルターを追加して、さらに絞り込むことができます。追加したフィルターをクリアするには、「=」を押します。

CPU およびメモリ統計のデフォルトの外観の変更

ほとんど自宅で GUI 環境を使用している場合、CPU とメモリの統計を表示する top のデフォルトの方法が気に入らないかもしれません。 「t」と「m」を押すと、CPU とメモリ統計のスタイルを変更できます。これは、't' と 'm' を 1 回押した top のスクリーンショットです。

「t」または「m」を繰り返し押すと、4 つの異なるビューが循環します。最初の 2 回押すと、2 種類の進行状況バーが循環します。キーを 3 回押すと、プログレス バーが非表示になります。キーをもう一度押すと、デフォルトのテキストベースのカウンターに戻ります。

設定を保存しています

top の出力に変更を加えた場合は、後で使用するために「W」を押して保存できます。 top はその構成を .toprc に書き込みます ホーム ディレクトリにあるファイル

結論

top コマンドは、Linux システムでのプロセスの監視と管理に非常に役立ちます。この記事は表面をなぞっただけで、まだカバーしていない部分がかなりあります。たとえば、一番上に追加できる列は他にもたくさんあります。これらすべてについては、man top を実行して man ページを確認してください。


Linux
  1. 初心者向けのLinuxターミナルガイド

  2. Linuxlsコマンドをマスターする

  3. Linuxpsコマンド

  1. Linuxftpコマンドの使用方法

  2. Linux での locate コマンド

  3. Linux の「検索」コマンドのガイド

  1. Linuxシステムプロセスを監視するためにhtopを使用する方法

  2. Linuxシャットダウンコマンド

  3. LinuxのPgrepコマンド