【问题标题】:Get CPU usage for indivudal cores in mpstat获取 mpstat 中各个核心的 CPU 使用率
【发布时间】:2021-06-13 19:41:32
【问题描述】:

有人要求我使用 mpstat 获取单个内核的 CPU 使用率。我可以像这样获得每个 CPU 所需的所有信息:

mpstat -P 0

它给出以下输出:

Linux 3.10.0-957.21.3.el7.x86_64 (cpu_devel)         03/16/2021      _x86_64_        (48 CPU)

09:59:32 AM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
09:59:32 AM    0    0.05    0.00    0.05    0.00    0.00    0.01    0.00    0.00    0.00   99.89

我需要做的是获取空闲下的数字 (99.89) 并从 100 中减去它以获得总 CPU 使用率。我试图用这样的空格分隔符来获取第 12 个字段:

mpstat -P 0 | cut -d' ' -f12

但这告诉我每个字段之间实际上有多个空格。所以我正在寻求帮助以找到更清洁的解决方案!

【问题讨论】:

    标签: linux awk grep cut


    【解决方案1】:

    您只需使用awk 即可完成此操作。只需将您的命令(mpstat)输出作为标准输入传递给awk 命令作为输入;然后在awk 的主程序中查看行号是否为第 4 行,然后打印该行的最后一列(检查条件是否 $NF 大于 0,然后用 100 减去它,否则按原样打印)。

    mpstat -P 0 | awk 'FNR==4{print ($NF>0?100-$NF:$NF)}'
    

    【讨论】:

    • 哇,好干净!我猜 sed、awk 和 grep 都适用于不同的场景。那么我如何从 100 中减去呢?
    • @user2990406,确定我现在已经编辑了代码,请检查一次,让我知道它是怎么回事,干杯。
    猜你喜欢
    • 2016-09-11
    • 1970-01-01
    • 2016-08-19
    • 2013-07-17
    • 2015-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-22
    相关资源
    最近更新 更多