我如何在Linux的shell中确定当前CPU利用率?
例如,我可以像这样获取负载平均值:
cat /proc/loadavg
输出:
0.18 0.48 0.46 4/234 30719
我如何在Linux的shell中确定当前CPU利用率?
例如,我可以像这样获取负载平均值:
cat /proc/loadavg
输出:
0.18 0.48 0.46 4/234 30719
Linux 没有任何系统变量可以提供当前 CPU 利用率。相反,你需要多次读取 /proc/stat
:每个 cpu(n)
行的列都给出了总 CPU 时间,你需要进行后续读取以获取百分比。查看 此文档 以了解各列的含义。
uptime
命令可以显示过去 1、5、15 分钟的平均负载。
$ top
尝试这个命令:
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
ps -eo pid,pcpu,comm
如果你喜欢解析文本,或只想查看某些进程。
#!/bin/sh
ps -eo pid,pcpu,comm | awk '{if ($2 > 4) print }' >> ~/ps_eo_test.txt
ps -eo pcpu,comm | awk '{if ($1 > 0.1) arr[$2]+=$1} END {for (key in arr) printf("%s\t%s\n", arr[key], key)}'
。 - Dušan Brejka
vmstat
,额外的好处是它也适用于 BSD。 - minusf