web-dev-qa-db-ja.com

コマンドを使用してCPU使用率を表示する

CPU使用率を確認したい。
このコマンドを使用しました:

top -bn1 | grep "Cpu(s)" | 
           sed "s/.*, *\([0-9.]*\)%* id.*/\1/" | 
           awk '{print 100 - $1}'

ただし、100%を返します。
正しい方法は何ですか?

CPUの使用率を取得するための最良の方法は、/ proc/statファイルを読み取ることです。詳細については、man 5 procを参照してください。

Paul Colbyによって書かれた便利なスクリプトがあります here

#!/bin/bash
# by Paul Colby (http://colby.id.au), no rights reserved ;)

PREV_TOTAL=0
PREV_IDLE=0

while true; do

  CPU=(`cat /proc/stat | grep '^cpu '`) # Get the total CPU statistics.
  unset CPU[0]                          # Discard the "cpu" prefix.
  IDLE=${CPU[4]}                        # Get the idle CPU time.

  # Calculate the total CPU time.
  TOTAL=0

  for VALUE in "${CPU[@]:0:4}"; do
    let "TOTAL=$TOTAL+$VALUE"
  done

  # Calculate the CPU usage since we last checked.
  let "DIFF_IDLE=$IDLE-$PREV_IDLE"
  let "DIFF_TOTAL=$TOTAL-$PREV_TOTAL"
  let "DIFF_USAGE=(1000*($DIFF_TOTAL-$DIFF_IDLE)/$DIFF_TOTAL+5)/10"
  echo -en "\rCPU: $DIFF_USAGE%  \b\b"

  # Remember the total and idle CPU times for the next check.
  PREV_TOTAL="$TOTAL"
  PREV_IDLE="$IDLE"

  # Wait before checking again.
  sleep 1
done

cpu_usageに保存し、実行許可chmod +x cpu_usageを追加して実行します:

./cpu_usage

スクリプトを停止するには、ヒット Ctrl+c

15
girardengo

htop [対話型プロセスビューアー]を使用しないのはなぜですか?それをインストールするには、ターミナルウィンドウを開き、次のように入力します。

Sudo apt-get install htop

詳細と設定方法については、man htopも参照してください。

enter image description hereenter image description here

36
v2r

私はうまく機能するソリューションを見つけました、ここにあります:

top -bn2 | grep '%Cpu' | tail -1 | grep -P  '(....|...) id,' 

よくわかりませんが、-nパラメータを使用したtopの最初の反復は、すべてのテストで常に同じダミーデータを返します。

-n2を使用する場合、2番目のフレームは常に動的です。シーケンスは次のとおりです。

  1. Topの最初の2つのフレームを取得します:top -bn2
  2. 次に、それらのフレームから '%Cpu'を含む行のみを取得します:grep '%Cpu'
  3. 次に、最後のオカレンス/行のみを使用します: `tail -1``
  4. 次に、アイドル値を取得します(4または5文字、スペース、「id」):grep -P '(....|...) id,'

ポールがお役に立てば幸いです

enter image description here

6
Paul