即時取得cpu使用率

即時取得cpu使用率

當我執行以下命令來獲取 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.01top將 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。

相關內容