如何在 Linux 上獲取整體 CPU 使用率(例如 57%)
例如,我想知道如何獲取系統 CPU 使用率並使用 bash 以百分比表示。
樣本輸出:
57%
如果有多個核心,最好能計算出平均百分比。
這樣做可以查看整體 CPU 使用率。這呼叫
python3
並使用了跨平台psutil
模組。printf "%b" "import psutil\nprint('{}%'.format(psutil.cpu_percent(interval=2)))" | python3
該
interval=2
部分錶示要在 2 秒的阻塞時間內測量總 CPU 負載。樣本輸出:
9.4%
它包含的python程序是這樣的:
import psutil print('{}%'.format(psutil.cpu_percent(interval=2)))
放在
time
呼叫前面證明在這種情況下它需要大約2秒的指定間隔時間。這是呼叫和輸出:$ time printf "%b" "import psutil\nprint('{}%'.format(psutil.cpu_percent(interval=2)))" | python3 9.5% real 0m2.127s user 0m0.119s sys 0m0.008s
要查看單個核心的輸出,讓我們使用下面的這個 python 程序。首先,我獲得“per CPU”資訊的python 列表(數組),然後對該列表中的所有內容進行平均以獲得“total % CPU”類型值。然後我列印總和單個核心百分比。
蟒蛇程序:
import psutil cpu_percent_cores = psutil.cpu_percent(interval=2, percpu=True) avg = sum(cpu_percent_cores)/len(cpu_percent_cores) cpu_percent_total_str = ('%.2f' % avg) + '%' cpu_percent_cores_str = [('%.2f' % x) + '%' for x in cpu_percent_cores] print('Total: {}'.format(cpu_percent_total_str)) print('Individual CPUs: {}'.format(' '.join(cpu_percent_cores_str)))
如果您願意,可以將其包裝成一個非常醜陋的 1 行 bash 腳本,就像這樣。我必須確保在 Python 程序中只使用單引號
''
(""
printf "%b" "import psutil\n\ cpu_percent_cores = psutil.cpu_percent(interval=2, percpu=True)\n\ avg = sum(cpu_percent_cores)/len(cpu_percent_cores)\n\ cpu_percent_total_str = ('%.2f' % avg) + '%'\n\ cpu_percent_cores_str = [('%.2f' % x) + '%' for x in cpu_percent_cores]\n\ print('Total: {}'.format(cpu_percent_total_str))\n\ print('Individual CPUs: {}'.format(' '.join(cpu_percent_cores_str)))\n\ " | python3
範例輸出:請注意我有 8 個核心,因此“Individual CPUs:”後面有 8 個數字:
Total: 10.15% Individual CPUs: 11.00% 8.50% 11.90% 8.50% 9.90% 7.60% 11.50% 12.30%
有關python 呼叫****如何工作的更多資訊
psutil.cpu_percent(interval=2)
,請參閱此處的官方psutil.cpu_percent(interval=None, percpu=False)
文件:
psutil.cpu_percent(interval=None, percpu=False)
返回一個浮點數,以百分比表示目前系統範圍的 CPU 使用率。當間隔為 > 時,
0.0
比較間隔之前和之後經過的系統 CPU 時間(阻塞)。當間隔是0.0
或None
比較自上次呼叫或模組導入以來經過的系統 CPU 時間時,立即返回。這意味著第一次呼叫它時,它會返回一個0.0
你應該忽略的無意義的值。在這種情況下,為了準確起見,建議在兩次呼叫之間至少0.1
間隔幾秒鐘呼叫此函式。當 percpu 為 True 時,返回一個浮點列表,表示每個 CPU 的使用率百分比。列表的第一個元素指的是第一個 CPU,第二個元素指的是第二個 CPU,依此類推。列表的順序在呼叫之間是一致的。**警告:**第一次使用間隔 = 呼叫此函式時
0.0
,None
它將返回一個0.0
您應該忽略的無意義值。參考: