マシンで何が実行されているか、そしてどのプロセスがすべてのメモリを使い果たして物事をslllooowwwwにしているのかを調べようとすることは、ユーティリティtop
によってうまく機能するタスクです。 。
top
は、WindowsタスクマネージャやMacOSのアクティビティモニタと同様に機能する非常に便利なプログラムです。 top
を実行しています * nixマシンでは、システムで実行されているプロセスのライブの実行ビューが表示されます。
$ top
top
のバージョンによって異なります 実行していると、次のようなものが表示されます:
top - 08:31:32 up 1 day, 4:09, 0 users, load average: 0.20, 0.12, 0.10
Tasks: 3 total, 1 running, 2 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.5 us, 0.3 sy, 0.0 ni, 99.2 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem: 4042284 total, 2523744 used, 1518540 free, 263776 buffers
KiB Swap: 1048572 total, 0 used, 1048572 free. 1804264 cached Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 20 0 21964 3632 3124 S 0.0 0.1 0:00.23 bash
193 root 20 0 123520 29636 8640 S 0.0 0.7 0:00.58 flask
195 root 20 0 23608 2724 2400 R 0.0 0.1 0:00.21 top
top
のバージョン 特に表示される列では、これとは異なって見える場合があります。
出力に基づいて実行しているものを判断できますが、結果を解釈しようとすると少し混乱する可能性があります。
最初の数行には一連の統計(詳細)が含まれ、その後に結果のリスト(リスト)を含む表が続きます。後者から始めましょう。
その他のLinuxリソース
- Linuxコマンドのチートシート
- 高度なLinuxコマンドのチートシート
- 無料のオンラインコース:RHELの技術概要
- Linuxネットワーキングのチートシート
- SELinuxチートシート
- Linuxの一般的なコマンドのチートシート
- Linuxコンテナとは何ですか?
- 最新のLinux記事
これらはプロセスです システム上で実行されている。デフォルトでは、CPU使用率の降順で並べられています。これは、リストの一番上にあるアイテムがより多くのCPUリソースを使用しており、システムにより多くの負荷をかけていることを意味します。それらは、文字通り、リソース使用量による「トップ」プロセスです。あなたは認めなければなりません、それは賢い名前です。
COMMAND
右端の列には、プロセスの名前(プロセスを開始するために実行したコマンド)が表示されます。この例では、それらはbash
です。 (top
を実行しているコマンドインタープリター in)、flask
(Pythonで記述されたWebマイクロフレームワーク)、およびtop
他の列は、プロセスに関する有用な情報を提供します:
-
PID
:プロセスID 、プロセスをアドレス指定するための一意の識別子 USER
:プロセスを実行しているユーザー-
PR
:タスクの優先度 -
NI
:優先順位のより良い表現 -
VIRT
:KiB単位の仮想メモリサイズ(キビバイト)* -
RES
:KiB *の常駐メモリサイズ(「物理メモリ」およびVIRTのサブセット) -
SHR
:KiB *の共有メモリサイズ(「共有メモリ」とVIRTのサブセット) -
S
:プロセス状態、通常は私 =アイドル、 R =実行中、 S =眠っている、 Z =ゾンビ、 T またはt =停止(他の、あまり一般的ではないオプションもあります) -
%CPU
:最後の画面更新以降のCPU使用率 -
%MEM
:RES
のパーセンテージ 最後の画面更新以降のメモリ使用量 -
TIME+
:プロセスの開始以降に使用された合計CPU時間 COMMAND
:上記のコマンド
* VIRT
が何であるかを正確に知る 、RES
、およびSHR
値が表すのは実際にはではありません 日常業務で重要です。知っておくべき重要なことは、VIRT
が最も多いプロセスです。 最も多くのメモリを使用するプロセスです。 top
にいる場合 コンピューターが糖蜜のプールにあるように感じる理由をデバッグしているため、最大のVIRT
を使用するプロセス 番号が原因です。 「共有」および「物理」メモリの意味を正確に知りたい場合は、トップマニュアルの「Linuxメモリタイプ」を確認してください。
そして、はい、私はki biと入力するつもりでした ki loではなくバイト バイト。通常1キロバイトと呼ぶ1,024の値は、実際には キビバイト。ギリシャ語のキロ ("χίλιοι")は千を意味します そして、1,000の何かを意味します(たとえば、1キロメートルは1000メートル、1キログラムは1000グラムです)。キビはキロのかばん語です およびバイト 、およびそれは1,024バイト(または2)を意味します。しかし、言葉を言うのは難しいので、多くの人がキロバイトと言います それらが1,024バイトを意味するとき。これはすべて、top
であることを意味します ここでは適切な用語を使用しようとしているので、それを使用してください。 #themoreyouknow?。
画面の更新に関する注意:
ライブ画面の更新は、客観的に本当にクールなものの1つです。 Linuxプログラムで実行できます。つまり、リアルタイムで自分の表示を更新できるため、アニメーションで表示されます。彼らはテキストを使用していますが。とてもクール!この場合、統計の一部(%CPU
)があるため、更新間の時間は重要です。 および%MEM
)は、最後の画面更新以降の値に基づいています。
また、永続的なアプリケーションで実行しているため、キーコマンドを押して、設定や構成をライブで変更できます(たとえば、アプリケーションを閉じて、別のコマンドラインフラグを使用してアプリケーションを再度実行する代わりに)。
>
h
と入力します 「ヘルプ」画面を呼び出します。この画面には、デフォルトの遅延も表示されます。 (画面更新間の時間)。デフォルトでは、この値は(約)3秒ですが、d
と入力して変更できます。 (おそらく「遅延」の場合)またはs
(おそらく「画面」または「秒」の場合)。
プロセスのリストの上には、他にもたくさんの役立つ情報があります。これらの詳細のいくつかは奇妙で紛らわしいように見えるかもしれませんが、それぞれをステップスルーするのに少し時間がかかると、ピンチで引き上げるのに非常に便利な統計であることがわかります。
最初の行には一般的なシステム情報が含まれています
top
:top
を実行しています !こんにちはtop
!-
XX:YY:XX
:時間、画面が更新されるたびに更新されます -
up
(その後、X day, YY:ZZ
):システムの稼働時間、またはシステムの電源を入れてからどれくらいの時間が経過したか load average
(次に3つの数値):最後の1分間、5分間、および15分間のシステム負荷
2行目(Tasks
)は、実行中のタスクに関する情報を示しており、かなり自明です。プロセスの総数と、実行中、スリープ中、停止中、およびゾンビプロセスの数が表示されます。これは文字通りS
の合計です (状態 )上記の列。
3行目(%Cpu(s)
)は、CPU使用率をタイプ別に示しています。データは、画面の更新間の値です。値は次のとおりです。
us
:ユーザープロセス-
sy
:システムプロセス -
ni
:優れたユーザープロセス -
id
:CPUのアイドル時間。アイドル時間が長いということは、他の方法で多くのことが起こっていないことを意味します -
wa
:待機時間、またはI/O完了の待機に費やされた時間 hi
:ハードウェア割り込みの待機に費やされた時間-
si
:ソフトウェア割り込みの待機に費やした時間 -
st
:「ハイパーバイザーによってこのVMから盗まれた時間」
Tasks
を折りたたむことができます および%Cpu(s)
t
と入力して行 (「トグル」の場合)。
4番目(KiB Mem
)および5行目(KiB Swap
)メモリとスワップに関する情報を提供します。これらの値は次のとおりです。
total
used
free
しかしまた:
- メモリ
buffers
-
cached Mem
を交換します
デフォルトでは、それらはKiBにリストされていますが、E
を押します (「拡張メモリスケーリング」の場合)さまざまな値(キビバイト、メビバイト、ギビバイト、テビバイト、ペビバイト、およびエクスビバイト)を循環します。 (つまり、キロバイト、メガバイト、ギガバイト、テラバイト、ペタバイト、およびエクサバイトですが、それらの「本名」です。)
top
ユーザーマニュアルには、便利なフラグと構成に関するさらに詳しい情報が記載されています。システムのマニュアルを見つけるには、man top
を実行します。 。マニュアルのHTMLレンダリングを表示するさまざまなウェブサイトがありますが、これらはトップの異なるバージョン用である可能性があることに注意してください 。
2つの上位の選択肢
必ずしもtop
を使用する必要はありません 何が起こっているのかを理解するために。状況によっては、特によりグラフィカルなインターフェイスや特殊なインターフェイスが必要な場合に、他のツールが問題の診断に役立つ場合があります。
htop
htop
top
によく似ています 、しかし、それはテーブルに非常に役立つ何かをもたらします:CPUとメモリの使用のグラフィック表現。
これが、top
で調べた環境です。 htop
を検索します 。表示ははるかにシンプルですが、それでも機能が豊富です。
タスク数、負荷、稼働時間、プロセスのリストはまだありますが、コアごとのCPU使用率の気の利いた色付きのアニメーションビューが表示されます およびメモリ使用量のグラフ。
さまざまな色の意味は次のとおりです(h
を押してこの情報を取得することもできます 「ヘルプ」の場合)。
CPUタスクの優先順位またはタイプ:
- 青:優先度が低い
- 緑:通常の優先度
- 赤:カーネルタスク
- 青:仮想化されたタスク
- バーの最後の値は、使用されているCPUのパーセンテージです
メモリ:
- 緑:使用済みメモリ
- 青:バッファメモリ
- 黄色:キャッシュされたメモリ
- バーの最後の値は、使用済みメモリと合計メモリを示しています
色が役に立たない場合は、htop -C
を実行できます。 それらを無効にします。代わりにhtop
CPUとメモリの種類を区別するために異なる記号を使用します。
下部には、結果のフィルタリングや並べ替え順序の変更などを行うために使用できるアクティブなファンクションキーの便利な表示があります。いくつかのコマンドを試して、それらが何をするかを確認してください。 F9
を試すときは注意してください 。これにより、プロセスを強制終了(つまり停止)するシグナルのリストが表示されます。実稼働環境の外でこれらのオプションを検討することをお勧めします。
htop
の作者 、Hisham Muhammad(はい、htop
と呼ばれます Hishamの後)htop
についてのライトニングトークを発表しました 2月のFOSDEM2018で。彼はhtop
きちんとしたグラフィックを備えているだけでなく、古い監視ユーティリティ(top
など)よりも最新の統計情報を表示します。 )しないでください。
htop
についてもっと読むことができます マニュアルページまたはhtopWebサイト。 (警告:ウェブサイトにはhtop
のアニメーションの背景が含まれています 。)
Dockerを使用している場合は、docker stats
を実行できます。 コンテナが実行していることのコンテキストが豊富な表現を生成します。
これは、top
よりも役立つ場合があります なぜなら、プロセスで分離するのではなく、コンテナで分離しているからです。これは、コンテナが遅い場合に特に便利です。top
を実行するよりも、どのコンテナが最も多くのリソースを使用しているかを確認する方が速いためです。 プロセスをコンテナにマッピングしようとしています。
top
の頭字語と記述子に関する上記の説明 およびhtop
docker stats
にあるものを簡単に理解できるようにする必要があります 。ただし、docker statsのドキュメントには、各列の役立つ説明が記載されています。