代码之家  ›  专栏  ›  技术社区  ›  Joel

如何从shell中确定当前的CPU利用率?[闭门]

  •  33
  • Joel  · 技术社区  · 16 年前

    在Linux中,如何从shell确定当前的CPU利用率?

    例如,我得到的平均负载如下:

    cat /proc/loadavg
    

    产出:

    0.18 0.48 0.46 4/234 30719
    
    7 回复  |  直到 16 年前
        1
  •  45
  •   Marcin Orlowski    7 年前

    Linux没有提供当前CPU利用率的任何系统变量。相反,你必须阅读 /proc/stat 多次:列表中的每列 cpu(n) 行给出了总的CPU时间,您必须读取它的后续读数才能得到百分比。看见 this document 了解各个列的含义。

        2
  •  26
  •   Space    16 年前

    top ps

    使用top:这将显示cpu统计信息

    top -b -n 1 |grep ^Cpu
    

    使用ps:这将显示每个进程的cpu使用率百分比。

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

    此外,还可以用bash或perl编写一个小脚本来读取/proc/stat并计算CPU使用率。

        4
  •  10
  •   Aaron Digulla    13 年前

    uptime 提供过去1、5和15分钟的平均负载。

        5
  •  7
  •   Dénes Tarján    16 年前

    请尝试以下命令:

    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/linuxkernelnewbies@googlegroups.com/msg01690.html http://www.linuxhowtos.org/System/procstat.htm

        6
  •  6
  •   Johan    16 年前

    也许是这样的

    ps -eo pid,pcpu,comm
    

    如果你喜欢解析,也许只看一些过程。

    #!/bin/sh
    ps -eo pid,pcpu,comm | awk '{if ($2 > 4) print }' >> ~/ps_eo_test.txt
    
        7
  •  -3
  •   elcuco    16 年前

    您需要对几秒钟的平均负载进行采样,并由此计算CPU利用率。如果不确定对你有什么影响,请获取“top”的来源并阅读。