我如何从shell中确定当前的CPU利用率?

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

例如,我得到的平均负载是这样的:

cat /proc/loadavg 

输出:

 0.18 0.48 0.46 4/234 30719 

Linux没有提供当前CPU利用率的任何系统变量。 相反,您必须多次读取/ proc / stat:cpu(n)行中的每一列都给出了总CPU时间,您必须随后读取它才能获得百分比。 看到这个文件找出各个列的含义。

您可以使用top或ps命令来检查CPU使用情况。

使用顶部:这将显示你的CPU统计

 top -b -n 1 |grep ^Cpu 

使用ps:这将显示每个进程的%cpu使用情况。

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

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

命令uptime使您可以加载过去1分钟,5分钟和15分钟的平均值。

也许这样的事情

 ps -eo pid,pcpu,comm 

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

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

试试这个命令:

 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

您需要对负载平均值进行几秒钟的采样并从中计算CPU利用率。 如果不确定你要什么,得到“顶”的来源,并阅读它。