【问题标题】:CentOS CPU usageCentOS CPU 使用率
【发布时间】:2016-06-10 07:33:22
【问题描述】:

有没有办法在 CentOS 中获取 CPU 使用率?我需要解析这些信息并从 Perl 脚本中绘制它,所以它最好是一个简单的工具,可以打印出一个单一的输出。

【问题讨论】:

    标签: performance unix cpu centos


    【解决方案1】:

    更简单,看/proc/loadavg,它显示如下:

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

    前三个数字是“处理当前负载所需的 CPU 数量”。这意味着在多核上您可以毫无问题地加载 5。这三个数字在不同的时间间隔(1、5 和 15 分钟,根据man uptime)进行平均

    【讨论】:

      【解决方案2】:

      我实际上为此使用了 /proc/stat.. 这是我用于 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】:

        您可以在批处理模式下使用 top 并进行 1 次(或更多)次迭代。然后用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,
        

        【讨论】:

        • top 的有趣之处在于它总是出现在列表的顶部 ;-)
        【解决方案4】:

        我将“top”命令与一些“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}'

        【讨论】:

          【解决方案5】:

          顶上@http://www.atoptool.nl/ 将写入日志文件等。详情在这里:http://www.atoptool.nl/systemreports.php

          【讨论】:

            猜你喜欢
            • 2019-04-30
            • 1970-01-01
            • 2012-07-02
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2018-06-18
            • 2011-02-12
            相关资源
            最近更新 更多