他の人が言ったように、最善の方法はおそらく top
です .少し調整と解析が必要ですが、現在の CPU 使用率をパーセンテージで表示することができます。
top
ユーザー、システムプロセス、および nice
の間で CPU 使用率を分割します 3 つのプロセスの合計が必要です。したがって、top
を実行できます。 b
で 出力を解析できる atch モード。ただし、ここで説明したように、top -b
の 1 回目の繰り返し ブート以降のパーセンテージを返すため、少なくとも 2 回の反復が必要です (-n 2
) を使用して、現在のパーセンテージを取得します。スピードアップするには、 d
を設定できます 0.01
までの反復間の遅延 .最後に、あなたは grep
CPU パーセンテージを含む行に 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}'
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
統計を 60 秒ごとに 600 回、つまり 600 分収集します。