他の人が言ったように、最善の方法はおそらくtopです。少し調整して少し解析する必要がありますが、現在のCPU使用率をパーセントで示すために取得できます。
topCPU使用率をユーザー、システムプロセス、niceプロセスに分割します。3つの合計が必要です。そこで、我々は実行することができますtopでb私たちは、その出力を解析することを可能にする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}'