LinuxコマンドラインでCPU使用率を取得する方法は何ですか?[閉まっている]


12

これはtopLinuxのCPU使用率を取得するコマンドであり、cat /proc/stattopが使用する他の方法も含まれています 。

LinuxコマンドラインでCPU使用率を取得する他の方法は何ですか?

ユースケースシナリオ: このコマンドの出力は、CPU使用率を継続的に記録するスクリプトによって使用されます。topそして/proc/statログインすることは困難である詳細な使用法を与えます。CPU情報を取得する簡単な方法はありますか?


3
引用したものの何が問題になっていますか?
pataluc

@patalucより詳細な情報を提供します。私が使用し、全体的なCPU使用率と言うのCPUを必要とする:MEMが使用される91%:78%Memの無料:このような22%何か...
fasil

Nathanの答えを参照してくださいsed。値のみが必要な場合は、結果を取得できます。
pataluc

「建設的でない」として閉会する投票。superuser.com/help/dont-askから:「質問にフラグが付けられ、削除される可能性を防ぐため、主観的な質問をすることは避けてください。質問と一緒に回答が提供され、さらに多くの回答が期待されます。 、 あなたは何を使うのですか?' "
bwDraco

3
@DragonLordの実際には、これを行う方法は非常に限られており、ここでの2つの答えは実際に役立ちます。私は非常に一般的な誤解を指摘しtop、他は非常に有用なコマンドを提供します。私はXを使用しているわけではありません。質問ですが、X質問はどうすればいいですか。再開の投票。
テルドン

回答:


14

他の人が言ったように、最善の方法はおそらくtopです。少し調整して少し解析する必要がありますが、現在のCPU使用率をパーセントで示すために取得できます。

topCPU使用率をユーザー、システムプロセス、niceプロセスに分割します。3つの合計が必要です。そこで、我々は実行することができますtopb私たちは、その出力を解析することを可能にするATCHモード。ただし、ここで説明したように、最初の反復でtop -bはブート以降のパーセンテージが返さ-n 2れるため、現在のパーセンテージを取得するには少なくとも2回の反復()が必要です。速度を上げるために、d反復間の遅延をに設定できます0.01。最後に、grepCPUパーセンテージを含む行を使用gawkして、ユーザー、システム、およびナイスプロセスを合計します。

    top -bn 2 -d 0.01 | grep '^%Cpu' | tail -n 1 | gawk '{print $2+$4+$6}'
        -----  ------   -----------    ---------   ----------------------
          |      |           |             |             |------> add the values
          |      |           |             |--> keep only the 2nd iteration
          |      |           |----------------> keep only the CPU use lines
          |      |----------------------------> set the delay between runs
          |-----------------------------------> run twice in batch mode

またps -o pcpu ax、実行中の各プロセスの%useを追加することで、この情報を取得できると考えました。残念ながら、ここで説明したようにps「プロセスのライフタイム全体で実行に費やされた時間の割合を返します」が、これは必要なものではありません。


編集

あなたのコメントに基づいて、あなたのバージョンはtop私のものとは異なり、代わりにこれを使用する必要があります:

top -bn 2 -d 0.01 | grep '^Cpu.s.' | tail -n 1 | gawk '{print $2+$4+$6}'

また、ローカライズに関する問題を回避するには、ロケールをCに設定します。

LC_ALL=C top -bn 2 -d 0.01 | grep '^Cpu.s.' | tail -n 1 | gawk '{print $2+$4+$6}'

あなたの言ったことは正しいので、私は答えを削除しました。これは有効な方法のようです。
ネイサンC

@NathanCあなたの答えも正しかったと思った、それは私が答えたであろうことだった。それから私はそれをテストし、驚いた:)。
テルドン

@terdon詳細な回答をありがとう...上記のコマンドの出力を取得できませんでした。構文上の変更が必要ですか
。-fasil

@fasilいいえ、動作するはずです。何が問題ですか?エラーメッセージはありますか?
テルドン

@terdon完全なコマンドの出力が得られません。エラー
...-fasil

9

sarそれが決定的な方法です。そのため、たとえばsar -u次のようなものが出力されます 。

08:30:01 AM       CPU     %user     %nice   %system   %iowait     %idle
08:40:01 AM       all      6.94      0.00      1.77      4.92     86.36
08:50:01 AM       all      5.73      0.00      2.31     12.72     79.24
09:00:01 AM       all      5.95      0.00      2.58     18.36     73.11
09:10:01 AM       all      6.88      0.00      2.22     17.44     73.45
09:20:01 AM       all      8.61      0.00      2.68     27.93     60.78

どのLinuxを使用しているのかはわかりませんが、CentOS / RedHatの場合はsysstatパッケージをインストールする必要があり、Debian / Ubuntuでも同じだと思います。

sarを使用して、アドホックな統計を収集することもできます

sar -o /tmp/sar.out 60 600

600秒ごとに60秒ごとに統計情報を収集します。


1
おそらく異なる表現をする必要があります。投稿した行は、60秒ごとに600回測定されます。あなたの投稿を読んだ方法では、600は期間であるため、30 600を入力すると、600分間は30秒ごとにかかりますが、実際には30秒ごとに600回かかります。
ジェームズマクドネル
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.