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

Joe*_*oel 36 linux

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

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

cat /proc/loadavg
Run Code Online (Sandbox Code Playgroud)

输出:

0.18 0.48 0.46 4/234 30719
Run Code Online (Sandbox Code Playgroud)

Mar*_*wis 36

Linux没有任何系统变量可以提供当前的CPU利用率.相反,您必须多次读取/ proc/stat:cpu(n)行中的每一列都给出了总CPU时间,您必须对其进行后续读取才能获得百分比.请参阅此文档以了解各列的含义.

  • 因为Space的答案不起作用.它返回自进程启动以来的平均CPU使用率和*not**current*CPU使用率.*这个*答案是正确的. (3认同)

Spa*_*ace 21

您可以使用topps命令来检查CPU使用情况.

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

top -b -n 1 |grep ^Cpu
Run Code Online (Sandbox Code Playgroud)

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

ps -eo pcpu,pid,user,args | sort -r -k1 | less
Run Code Online (Sandbox Code Playgroud)

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

  • top的%CPU计算与ps的%CPU计算不同.看到这个答案http://unix.stackexchange.com/questions/58539/top-and-ps-not-showing-the-same-cpu-result (4认同)
  • 我们尝试过,"top -b -n 1"给出了非常不准确的结果."top"的第一次迭代非常近似,可以给出10%而不是60%. (2认同)

Aar*_*lla 11

该命令uptime为您提供过去1分钟,5分钟和15分钟的平均负载.


Joh*_*han 6

也许像这样

ps -eo pid,pcpu,comm
Run Code Online (Sandbox Code Playgroud)

而且,如果您想解析,也许只看一些过程。

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


Den*_*jan 6

试试这个命令:

cat /proc/stat
Run Code Online (Sandbox Code Playgroud)

这将是这样的:

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
Run Code Online (Sandbox Code Playgroud)

更多细节:

http://www.mail-archive.com/linuxkernelnewbies@googlegroups.com/msg01690.html http://www.linuxhowtos.org/System/procstat.htm