【问题标题】:How to capture CPU Idle time from Top如何从顶部捕获 CPU 空闲时间
【发布时间】:2015-07-14 09:55:06
【问题描述】:

我正在尝试从 TOP 捕获 CPU 空闲时间。 以下代码捕获平均负载 我正在尝试操作以下代码,以便它捕获 CPU 空闲时间。

欢迎任何想法。

top -bn1 | grep load | awk '{printf "CPU load %: %.2f\n", $(NF-2)}' 
The Above Code Outputs: CPU load %: 0.44

我想更改代码以输出 CPU 空闲时间 CPU ID %:92.9%

示例顶部输出:

top - 10:35:25 up 1 day, 16:06,  5 users,  load average: 0.24, 0.16, 0.15
Tasks: 210 total,   2 running, 198 sleeping,  10 stopped,   0 zombie
%Cpu(s):  2.2 us,  0.2 sy,  4.7 ni, 92.9 id,  0.0 wa,  0.0 hi,  0.0 si,  0.1 st
KiB Mem:  16433064 total,  1353396 used, 15079668 free,   180944 buffers
KiB Swap:        0 total,        0 used,        0 free.   700468 cached Mem

PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
24293 ubuntu    30  10   32828   2576   1608 S  19.3  0.0   0:25.30 fiberlamp
 2173 ubuntu    20   0   51200  16496   4952 S   9.3  0.1 263:34.18 Xvnc4
12648 ubuntu    20   0   23668   1732   1180 R   0.3  0.0   0:04.25 top.....
........

【问题讨论】:

  • 你得到什么输出,你期望什么?
  • 试试看this question
  • 预期输出仍不清楚...
  • 我不愿给出答案,因为例如,顶部的 my 第 3 行看起来像这样(注意没有“id”表示空闲,并且使用小数点逗号而不是小数点):%Cpu(s): 0,0 be, 0,0 sy, 0,0 ni, 99,9 un, 0,1 wa, 0,0 hi, 0,0 si, 0,0 st -- top 的确切输出可能会有所不同(取决于平台、语言环境等),并且您的捕获行可能会出现空白。
  • 感谢您。- 我需要在应用程序中保持一致。

标签: linux bash unix


【解决方案1】:

grep for '%Cpu(s)'

top -bn1 | grep '%Cpu(s)' | awk -F',' '{printf "CPU id %: %.2f%\n", $4}'

【讨论】:

  • 添加 LANG=en_US 以避免小数逗号问题。而且我仍然不确定您是否可以权威地依赖“空闲”作为该行中的第四个值...
  • 您好,我不清楚您所说的添加 LANG=en_US 是什么意思,请问我应该在哪里执行此操作?
  • 这个解决方案的一个特点是 CPU 指标似乎总是返回相同的值。 94.5% 但是,当我并行运行 top 时,我得到 CPU 空闲,指标不同
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-18
  • 1970-01-01
相关资源
最近更新 更多