我试图在多个主机上运行此脚本,但它们没有安装BC。
我听说你可以用“awk”开头{print…}'的字眼,但我无法让它工作。
#!/bin/bash
nproc=$(nproc);
load=$(uptime | awk '{print $12}');
load_diff=$(echo "$load - $nproc" | bc)
cores=$(echo "$nproc * .25" | bc)
if (( $(echo "$load_diff > $cores" | bc --mathlib) ));
then
top -c -n 2 -b > /tmp/top.txt
fi
最佳答案
linux或unix操作系统提供bc
和expr
进行算术计算。
因此,如果未安装bc
,则可以利用expr
进行计算。
您可以使用下面的命令在expr
中执行相同的任务:
发件人:
load_diff=$(echo "$load - $nproc" | bc)
致:
load_diff=$(expr $load - $nproc) or load_diff=`expr $load - $nproc`
然而,
expr
的一个限制是它不处理小数。为此,可以使用下面的awk命令来处理小数。cores=$(awk 'BEGIN{ print '$nproc' * '.25'}') and load_diff=$(awk 'BEGIN{print '$load' - '$nproc' }')