2010-07-29 136 views
0

有沒有辦法在CentOS中獲得CPU使用率?我需要解析這些信息並從Perl腳本中繪製出來,所以它最好是一個打印出單個輸出的簡單工具。CentOS CPU使用率

回答

2

我實際上使用/ proc/stat for this ..這裏是我用於dzen2小部件的python的重要部分。

while(1): 
    f = file("/proc/stat","r") 
    fcon = f.read().split("\n")[0].split() 
    new.user, unice, new.sys, new.idle, new.iowait = [ 
      int(x) for x in fcon[1:6] ] 

    new.user += unice 
    master.user = new.user - old.user 

    master.sys = new.sys - old.sys 
    master.idle = new.idle - old.idle 
    master.iowait = new.iowait - old.iowait 

    maxval = master.user + master.sys + master.idle + master.iowait 
    curval = master.user + master.sys + master.iowait 

    old.copy(new) 
    print (float(curval)/maxval) * 100) 
    time.sleep(1) 

這將打印第二個處理器的使用百分比。

錯誤的語言,我知道,但你應該能夠得到輸出的哪些列的含義是指什麼。

3

更容易,看看/proc/loadavg,它顯示是這樣的:

$ cat /proc/loadavg 
0.37 0.67 0.68 1/312 8594 

前三個數字是「你需要處理當前負載的CPU數量「。這意味着在多核上你可以有5個負載沒有問題。這三個數字在不同的時間間隔內平均(1分,5分鐘和15分鐘,根據man uptime

1

您可以在1(或更多)次迭代的批處理模式下使用top。然後使用grep解析它。

$ top -b -n 1 | grep -2 "load average"

top - 12:08:31 up 14 days, 19:03, 26 users, load average: 0.25, 0.45, 0.37 
Tasks: 219 total, 1 running, 217 sleeping, 0 stopped, 1 zombie 
Cpu(s): 4.2%us, 0.6%sy, 0.0%ni, 94.0%id, 1.0%wa, 0.0%hi, 0.3%si, 0.0%st 

$ top -b -n 1 | grep "Cpu(s)\:"

Cpu(s): 4.2%us, 0.6%sy, 0.0%ni, 94.0%id, 1.0%wa, 0.0%hi, 0.3%si, 0.0%st 

此外,您使用可以使用awk從那裏得到一個特定的列和工作。

$ top -b -n 1 | grep "Cpu(s)\:" | awk '{print $2}'

4.2%us, 
+0

約'top'有趣的是,它總是出現在列表的頂部;-) – mvds 2010-07-29 19:31:14

1

我使用的 「頂部」 命令與一些的 「grep」 組合 「sed的」 和 「AWK」 命令:

  1. 首先,我通過執行列出的活動的進程: top -n 1
  2. 然後從結果中提取「%CPU」列:awk '{print $10}'。注意:其中10代表列數。 See Image
  3. 然後使用「sed」我從結果中刪除一些不必要的行:sed '1,7d'
  4. 最後,我使用「awk」命令對所有百分比進行求和:awk '{s+=$1} END {print s}'See Image

最後一個命令將是這樣的:top -n 1 | awk '{print $10}' | sed '1,7d' | awk '{s+=$1} END {print s}'