在 mpstat 中获取 CPU 个单个内核的使用情况

Get CPU usage for indivudal cores in mpstat

有人要求我使用 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

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

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

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