首页 > 解决方案 > 如何从 bash 检查 Linux CPU 使用情况?

问题描述

如果这是一个双重/三重职位,我深表歉意。我找到了多个答案,所有答案都返回略有不同的结果。我非常不确定哪一个是“正确”的,或者它们中的任何一个实际上都没有为我提供正确的价值。

我有一台无法在其上安装更多应用程序的 Linux 机器,我正在尝试运行一个 bash 脚本,该脚本将定期显示 CPU 的总使用率。下面是我在网上找到的一个,它似乎给了我我所追求的东西,但我不是 100% 相信这会提取正确的 CPU 使用信息,因为它从我相信的 TOP 中提取数据,由于它从 UNIX 机器启动时拉取平均值,因此不会拉取真实值?

提前致谢

echo print `top -n 1 | tr -s " " | cut -d$" " -f10 | tail -n +8 | head -n -1 | paste -sd+ | bc`/ `nproc` | python

标签: linuxbash

解决方案


更有效的是直接读取/proc/loadavg,从而直接从内核收集数据。

IFS=$' \t/' read -r load_1min load_5min load_15min load_inst_cur load_inst_tot _ </proc/loadavg
echo "Average load over the last minute: $load_1min"
echo "Number of runnable processes this instant: $load_inst_cur of $load_inst_tot"

请注意,平均负载并不是严格意义上的 CPU 使用率——它还衡量等待 I/O 资源的进程。


推荐阅读