linux系统统计CPU使用率情况

命令: top -bn1 | grep "Cpu(s)" | awk '{printf "CPU Usage: %.2f%\n", 100 - $8}'

1、top 命令用于实时监控系统性能,-b(batch mode 批量模式)和 -n1(运行 1 次)让 top 只执行一次并退出,适合用于脚本。

us(user):用户态 CPU 使用率

sy(system):内核态 CPU 使用率

ni(nice):低优先级任务 CPU 占用

id(idle):空闲 CPU 百分比(重点)

wa(iowait):I/O 等待占比

hi(hardware interrupt):硬件中断占比

si(software interrupt):软件中断占比

st(steal):虚拟机偷取 CPU 资源占比

2、grep "Cpu(s)" 提取 CPU 相关信息

top 输出有很多行,我们只需要 CPU 相关的行。

grep 过滤掉其他无关的内容,只保留:

%Cpu(s): 1.2 us, 0.3 sy, 0.0 ni, 98.2 id, 0.1 wa, 0.0 hi, 0.2 si, 0.0 st

3、awk 计算 CPU 使用率  

CPU 使用率=100−空闲率 (id)

awk '{printf "CPU Usage: %.2f%\n", 100 - $8}'

$8 代表第 8 列(空闲率 id)。

100 - $8 计算 CPU 使用率:

例如:id = 98.2

计算:100 - 98.2 = 1.8

CPU 使用率 = 1.8%

4、printf "CPU Usage: %.2f%\n", 100 - $8:

%.2f 保留 2 位小数

\n 换行

最终输出格式

--------------------------------------------
  • top -bn1 → 获取 CPU 负载数据

  • grep "Cpu(s)" → 过滤出 CPU 相关行

  • awk '{printf "CPU Usage: %.2f%\n", 100 - $8}' → 计算 100 - 空闲率 id

--------------------------------------------
注:如果你想获取 所有 CPU(多核)的总使用率,可以用 mpstat: mpstat 1 1 | awk '/Average:/ {printf "CPU Usage: %.2f%\n", 100 - $NF}'

  

posted @ 2025-03-26 08:32  LB_运维技术  阅读(885)  评论(0)    收藏  举报