2009-08-26 49 views
29

如何從Linux中的shell中確定當前的CPU利用率?如何從shell中確定當前的CPU利用率?

例如,我得到的平均負載,像這樣:

cat /proc/loadavg 

輸出:

0.18 0.48 0.46 4/234 30719 
+0

只是FYI,負載平均值不是CPU使用率,雖然它可能間接顯示CPU使用率。這是一個數字,顯示有多少進程在運行,但等待資源,無論是CPU還是磁盤或其他。 – hhaamu 2009-08-26 07:23:57

+0

我知道這一點。實際上,我評論了這個效應的答案。 – Joel 2009-08-26 07:25:35

回答

23

Linux沒有提供當前CPU利用率的任何系統變量。相反,您必須多次讀取/ proc/stat:cpu(n)行中的每一列都給出了總CPU時間,並且必須隨後讀取它才能獲得百分比。請參閱this document以瞭解各個列的含義。

+0

如果這是真的,那麼爲什麼太空的答案有效? – Brain2000 2013-11-13 17:49:13

+1

因爲Space的答案不起作用。它會返回進程啓動後的平均CPU使用率,而不是*當前* CPU使用率。 *這個*答案是正確的。 – scai 2016-08-12 11:11:56

-4

您需要將負載平均值抽樣幾秒鐘,並從中計算CPU利用率。如果不確定給你什麼,請獲取「頂部」的來源並閱讀它。

+1

謝謝 - 但沒有辦法從負載平均值計算CPU利用率。 – Joel 2009-08-26 07:21:52

+0

實際上,再次閱讀源代碼。我認爲,平均負載是CPU利用率的派生物,因爲您需要進行某種積分才能獲得CPU利用率。沒有更好的方法來解釋這一點 - 只需使用源運氣。 – elcuco 2009-08-26 09:00:39

4

也許這樣的事情

ps -eo pid,pcpu,comm 

,如果你喜歡解析,也許只是看一些過程。

#!/bin/sh 
ps -eo pid,pcpu,comm | awk '{if ($2 > 4) print }' >> ~/ps_eo_test.txt 
23

您可以使用topps命令來檢查CPU使用率。

使用頂部:這將顯示您的CPU使用PS統計

top -b -n 1 |grep ^Cpu 

:這將顯示每個進程的%的CPU使用率。

ps -eo pcpu,pid,user,args | sort -r -k1 | less 

另外,還可以在bash或Perl寫一個小腳本讀取的/ proc/STAT和計算CPU使用率。

+2

我們試過了,「top -b -n 1」的結果很不準確。 「top」的第一次迭代非常接近,可以給出10%而不是60. – 2009-08-28 11:51:07

+0

用-n> 1來增加迭代次數會更精確嗎?你測試過這種情況了嗎? – Christian 2012-05-04 06:45:07

+4

top對%CPU的計算不同於ps對%CPU的計算。看到這個答案http://unix.stackexchange.com/questions/58539/top-and-ps-not-showing-the-same-cpu-result – BozoJoe 2013-09-23 21:59:37

4

試試這個命令:

cat /proc/stat 

這將是這樣的:

cpu 55366 271 17283 75381807 22953 13468 94542 0 
cpu0 3374 0 2187 9462432 1393 2 665 0 
cpu1 2074 12 1314 9459589 841 2 43 0 
cpu2 1664 0 1109 9447191 666 1 571 0 
cpu3 864 0 716 9429250 387 2 118 0 
cpu4 27667 110 5553 9358851 13900 2598 21784 0 
cpu5 16625 146 2861 9388654 4556 4026 24979 0 
cpu6 1790 0 1836 9436782 480 3307 19623 0 
cpu7 1306 0 1702 9399053 726 3529 26756 0 
intr 4421041070 559 10 0 4 5 0 0 0 26 0 0 0 111 0 129692 0 0 0 0 0 95 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 369 91027 1580921706 1277926101 570026630 991666971 0 277768 0 0 0 0 0 0 0 0 0 0 0 0 0 
ctxt 8097121 
btime 1251365089 
processes 63692 
procs_running 2 
procs_blocked 0 

更多細節:

http://www.mail-archive.com/[email protected]/msg01690.html http://www.linuxhowtos.org/System/procstat.htm

8

命令uptime給你羅過去1分鐘,5分鐘和15分鐘的廣告平均數。