如何将一个命令的输出除以另一个命令的输出?

如何将一个命令的输出除以另一个命令的输出?

我想知道服务器负载除以CPU核心数,以便判断哪些服务器过载。我可以通过以下方式获取 CPU 核心数量:

$ grep -c processor /proc/cpuinfo
2

我可以通过以下方式获取服务器负载:

$ uptime | awk '{print $11}'
0.47,

现在我想除以0.47/2得到0.23我如何知道要阅读哪个联机帮助页才能执行此操作?我真的在寻找如何了解找到正确命令的下一步是什么,我并不是要求命令本身。

我尝试在网上搜索这个问题,甚至谷歌也无法引导我走向正确的方向。因此,或者,我应该搜索哪些关键字?明显的“linux、division、bash、output”没有帮助。

答案1

这应该可以解决问题:

(awk '{printf "%s/", $2}' /proc/loadavg; grep -c processor /proc/cpuinfo;) | bc -l

/proc/loadavg另外,您应该从命令uptime也获取负载的地方获取负载。

答案2

只需编写 bash 脚本即可。将两个值获取到 2 个不同的变量。然后通过使用命令bc将一个与另一个分开。就如此容易。

答案3

decimal_places=2
dc  <<< "${decimal_places}k $(uptime | awk '{print $11}'|  cut -d"," -f1) $(grep -c processor /proc/cpuinfo) /p"

这个答案$()在 bash 中使用,因此不需要临时变量。它还使用计算器 dc。我们使用 告诉 dc 精度k,然后给它 2 个数字,然后要求它除以它们并打印答案。

答案4

如果您使用 zsh,请尝试:

echo $(($(grep -c processor /proc/cpuinfo) / $(uptime | awk '{print $11}')))

截屏

相关内容