Linux の top コマンド:リアルタイムシステムモニタリング

LinuxLinuxBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

Linuxのtopコマンドに関する実験へようこそ。この実験では、topコマンドを使ってシステムプロセスとリソースの使用状況をリアルタイムで監視する方法を学びます。このスキルは、システム管理者、開発者、およびシステムパフォーマンスを理解し管理する必要のある誰にとっても欠かせないものです。

忙しいWebサーバーの保守を担当する初任のシステム管理者だと想像してみてください。サーバーが遅くなっていると報告されており、最も多くのリソースを消費しているプロセスを特定する必要があります。この調査における主なツールはtopコマンドで、これによりリアルタイムでシステムの活動を表示し分析することができます。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/SystemInformationandMonitoringGroup(["System Information and Monitoring"]) linux/SystemInformationandMonitoringGroup -.-> linux/top("Task Displaying") subgraph Lab Skills linux/top -.-> lab-388500{{"Linux の top コマンド:リアルタイムシステムモニタリング"}} end

topコマンドの基本的な使い方

まずは、最もシンプルな形式でtopコマンドを実行してみましょう。これにより、システムのプロセスのリアルタイムで動的なビューが得られます。

ターミナルを開き、次のコマンドを実行します。

top

次のような表示が見られるはずです。

top - 14:30:23 up  5:10,  1 user,  load average: 0.15, 0.22, 0.28
Tasks: 213 total,   1 running, 212 sleeping,   0 stopped,   0 zombie
%Cpu(s):  2.0 us,  1.3 system,  0.0 ni, 96.3 id,  0.3 wa,  0.0 hi,  0.0 si,  0.0 st
MiB Mem :   7824.9 total,   2576.8 free,   2935.0 used,   2313.1 buff/cache
MiB Swap:   2048.0 total,   2048.0 free,      0.0 used.   4558.1 avail Mem

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
 1234 user      20   0 3626108 205008  89380 S   2.0   2.6   0:45.85 gnome-shell
 5678 user      20   0  859492  51528  38060 S   1.3   0.6   0:10.91 Xorg
 9101 user      20   0  722816  36096  29088 S   0.7   0.5   0:05.62 gnome-terminal

この表示は(デフォルトでは3秒ごとに)連続的に更新されます。見ている内容を分解してみましょう。

  1. 最初の行は、現在時刻、システム稼働時間、ユーザー数、およびロード平均を示しています。
  2. 2行目は、タスクの合計数とその状態(実行中、睡眠中、停止中、ゾンビ)を表示しています。
  3. 3行目は、CPU使用率のパーセンテージを示しています。
  4. 4行目と5行目は、メモリとスワップの使用状況を表示しています。
  5. 以下のテーブルは、個々のプロセスに関する情報を示しており、デフォルトではCPU使用率でソートされています。

topを終了するには、'q'を押します。

topにおけるプロセスのソート

デフォルトでは、topはCPU使用率に基づいてプロセスをソートします。ただし、このソートをリアルタイムで変更することができます。代わりにメモリ使用率でソートする方法を見てみましょう。

  1. topコマンドを実行します。
top
  1. topが実行されている状態で、'M'キー(大文字)を押します。これにより、プロセスがCPU使用率ではなくメモリ使用率(リジデントセットサイズ)に基づいてソートされます。

この時点で、最もメモリを多く消費するプロセスがリストの上部に表示されるように、プロセスの順序が変更されているはずです。

  1. 再度CPU使用率でソートするには、'P'キー(大文字)を押します。

  2. プロセスID(PID)でソートするには、'N'キー(大文字)を押します。

  3. 現在のソート順を逆にするには、'R'(大文字)を押します。

覚えておいてください。topが実行されている間は、常に'h'または'?'を押すことで、利用可能なコマンドの一覧が表示されるヘルプ画面を表示できます。

調査が終わったら、'q'を押してtopを終了します。

更新間隔の変更

デフォルトでは、topは3秒ごとに表示を更新します。ただし、この間隔を変更することができます。より頻繁な更新のために、1秒ごとに更新するように設定してみましょう。

-dオプションでtopを実行します。

top -d 1

この時点で、表示がより頻繁に更新されるはずです。短命なプロセスをキャッチしようとしている場合や、システム活動の急速な変化を観察する必要がある場合に便利です。

topが実行されている間に更新間隔を変更するには:

  1. 'd'(小文字)を押します。
  2. 新しい遅延時間を秒数で入力します(たとえば、半秒間は'0.5')。
  3. Enterキーを押します。

非常に短い更新間隔自体が大量のCPUリソースを消費する可能性があることを忘れないでください。したがって、慎重に使用してください。

終了したら、'q'を押してtopを終了します。

特定のユーザーのプロセスを表示する

システム管理者として、特定のユーザーのプロセスを監視する必要が頻繁にあります。topコマンドを使えば、これを簡単に行うことができます。

この実験環境では現在のユーザー(ここでは'labex')のプロセスを監視してみましょう。

top -u labex

この時点で、'labex'ユーザーが所有するプロセスのみが表示されるはずです。

この機能は、特定のユーザーの活動に関連する問題をトラブルシューティングしようとしている場合や、マルチユーザーシステムで自分自身のプロセスに焦点を当てたい場合に特に便利です。

観察が終わったら、'q'を押してtopを終了します。

アクティブなプロセスのみを表示する

時には、アクティブなプロセスのみに焦点を当て、アイドルなプロセスは無視したい場合があります。topコマンドにはこのためのオプションが用意されています。

-iオプションでtopを実行します。

top -i

このコマンドは、最後の更新以来CPU使用率がゼロであるプロセスを除外して、アクティブなプロセスのみを表示します。

これは、アイドルなプロセスの雑音を排除して、現在リソースを消費しているプロセスを特定しようとする際に特に便利です。

観察が終わったら、'q'を押してtopを終了します。

まとめ

おめでとうございます!topコマンドを使ったリアルタイムシステムモニタリングのこの実験を完了しました。学んだことを振り返りましょう:

  1. システムプロセスとリソース使用状況を表示するためのtopコマンドの基本的な使い方
  2. top内で異なる基準(CPU使用率、メモリ使用率、PID)でプロセスをソートする方法
  3. より頻繁またはそれより少ない更新のためにtopの更新間隔を変更する方法
  4. 特定のユーザーのプロセスを監視する方法
  5. アイドルなプロセスを除外して、アクティブなプロセスのみを表示する方法

これらのスキルは、システムリソースの監視と管理にとって非常に貴重なものです。特に、パフォーマンスのボトルネックを特定したり、システムの問題をトラブルシューティングする必要があるシナリオです。

この実験では扱わなかった追加のtopコマンドオプションとインタラクティブコマンドをいくつか紹介します:

  • -b:バッチモードで実行する(他のプログラムやファイルに出力を送るのに便利)
  • -ntopが終了するまでの反復回数
  • 'k':top内からプロセスを殺す(PIDで)
  • 'r':プロセスの優先度を変更する
  • 'c':コマンド名/コマンドラインの表示を切り替える
  • 'V':バージョン情報を表示する

忘れないでください。効果的なシステムモニタリングは、システムのパフォーマンスと安定性を維持するために不可欠です。topコマンドを定期的に使用することで、システムのパフォーマンスに重大な影響を与える前に、リソース関連の問題を検出して防止することができます。