linux - 从linux中的top命令计算CPU使用率
问题描述
我必须在我的应用程序上显示 CPU 使用率并实时更新它。我正在使用 top 命令来获取 CPU 使用率,即
我添加两个突出显示的值以获取 CPU 使用率。我用来添加突出显示的值并获取最终 CPU 使用率的命令是:
top -b -n 2 | grep Cpu | awk '{printf "CPU Load:%.2f\n", $(NF-13) + $(NF-15)}' | sed -n '2 p'
问题是,这个命令在某个时间后停止工作,即 3-4 分钟我确实得到了 CPU 使用率,但是在那个命令没有处理之后我没有得到更新的值。我正在循环运行此命令。
任何帮助将非常感激。
解决方案
我使用类似的脚本已经有一段时间没有问题了:
top -bn2 | grep Cpu | tail -n1 | sed -e 's/.*, *\([0-9.]*\)%* id.*/\1/' | awk '{print 100-$1}'
该脚本从顶部输出中获取“空闲”时间并将其从 100% 中扣除以获取 cpu 使用率。
您调用脚本的循环周期不应快于脚本完成所需的时间。否则,您可能会得到多个 'top' 并行运行。这主要取决于您系统上的“顶部”默认延迟,在我的系统上,它大约是 5 秒,但您可以使用 -d 开关进行设置。
推荐阅读
- r - 是否有任何简单的方法可以绘制连接 R 中 4 个点的图形?
- docker - 单节点 Kubernetes 集群 - 不同 pod 中的容器无法相互通信
- java - Java - Spring Boot - Hibernate - JPA(@ManyToOne 发布错误)
- python - 为什么在tensordot中没有保留痕迹
- tensorflow - 索引[3] = 36826 不在 [0, 36720)
- flutter - Webscoket 通道关闭后未连接 - Flutter
- r - 在 R 中将 4D 数组转换为 2D 数组
- python - 如何从访问数据库打开表作为数据框?
- playframework - Play Framework 1.2.6 - 将 CORS 添加到控制器中的所有响应
- java - Mockito 不存根,错误:需要但未调用