例如,我想知道如何使用bash获取系统CPU使用率并以百分比表示。
示例输出:
57%
如果有多个内核,如果能计算出平均百分比就更好了。
发布于 2012-02-10 22:56:58
您可以尝试:
top -bn1 | grep "Cpu(s)" | \
sed "s/.*, *\([0-9.]*\)%* id.*/\1/" | \
awk '{print 100 - $1"%"}'
发布于 2012-02-10 22:35:09
尝试使用sysstat
包中的mpstat
> sudo apt-get install sysstat
Linux 3.0.0-13-generic (ws025) 02/10/2012 _x86_64_ (2 CPU)
03:33:26 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle
03:33:26 PM all 2.39 0.04 0.19 0.34 0.00 0.01 0.00 0.00 97.03
然后使用cut
或grep
来解析您需要的信息:
mpstat | grep -A 5 "%idle" | tail -n 1 | awk -F " " '{print 100 - $ 12}'a
发布于 2012-02-10 23:11:54
我的解决方案受到Peter Liljenberg的启发,不妨提出一个实际的回应:
$ mpstat | awk '$12 ~ /[0-9.]+/ { print 100 - $12"%" }'
0.75%
这将使用awk
打印出100减去第12个字段(idle),后面有一个百分号。awk
仅对第12个字段仅包含数字和点的行($12 ~ /[0-9]+/
)执行此操作。
你也可以取五个样本的平均值,间隔一秒:
$ mpstat 1 5 | awk 'END{print 100-$NF"%"}'
像这样测试它:
$ mpstat 1 5 | tee /dev/tty | awk 'END{print 100-$NF"%"}'
https://stackoverflow.com/questions/9229333
复制相似问题