
當我執行以下命令來獲取 cpu 使用情況時,我得到了很好的+用戶 cpu 使用情況。
top -b -n1 | grep "Cpu(s)" | awk '{print $2 + $4}'
輸出:
14.5
這裡我遇到的問題是輸出取決於 top 命令,因此它不會像 top 命令那樣立即改變。所以我沒有立即獲得正確的CPU。它提供相同的輸出並且不變。
我想在輸出中獲得即時 cpu 使用情況。請幫助我提升我的指揮能力。
答案1
如果您可以承受一秒鐘的延遲,這會將 CPU 使用率列印為簡單的百分比:
echo $[100-$(vmstat 1 2|tail -1|awk '{print $15}')]
(沒有一秒鐘的延遲,vmstat
只能列印啟動以來的平均值。
答案2
這是 的一個已知問題top
。正如所解釋的這裡,第一次迭代top -b
傳回自啟動以來的百分比,因此我們至少需要兩次迭代 ( -n 2
) 才能取得目前百分比。為了加快速度,您可以將d
迭代之間的延遲設定為0.01
。top
將 CPU 使用率分成使用者、系統流程和nice
進程,我們需要三者的總和。最後,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
答案3
我嘗試了多種方法,但在我看來,這是最準確的:
cat <(grep 'cpu ' /proc/stat) <(sleep 1 && grep 'cpu ' /proc/stat) | awk -v RS="" '{print ($13-$2+$15-$4)*100/($13-$2+$15-$4+$16-$5)}'
從那裡得到的這裡
答案4
我需要每個核心的 CPU 使用情況,並使用 sysstat 套件中的 mpstat。
sudo apt install sysstat
CPU0 利用率(百分比):
echo 100 - $(mpstat -P 0 | tail -1 | awk '{print $13}') | bc
CPU1 利用率(百分比):
echo 100 - $(mpstat -P 1 | tail -1 | awk '{print $13}') | bc
如果您有超過 2 個核心,請更改 -PX。