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
htop
[対話型プロセスビューアー]を使用しないのはなぜですか?それをインストールするには、ターミナルウィンドウを開き、次のように入力します。
Sudo apt-get install htop
詳細と設定方法については、man htop
も参照してください。
私はうまく機能するソリューションを見つけました、ここにあります:
top -bn2 | grep '%Cpu' | tail -1 | grep -P '(....|...) id,'
よくわかりませんが、-n
パラメータを使用したtop
の最初の反復は、すべてのテストで常に同じダミーデータを返します。
-n2
を使用する場合、2番目のフレームは常に動的です。シーケンスは次のとおりです。
top -bn2
grep '%Cpu'
grep -P '(....|...) id,'
ポールがお役に立てば幸いです