我正在尝试通过以下方式获取CPU的总负载:
IDLE=$(mpstat | grep "all" | cut -c 92-)
CPULD=$(expr 100 - $IDLE)
echo $CPULD
但它总是返回:
expr: non-integer argument on the second line.
我环顾四周,每个人都说整数将在字符串中自动识别,但似乎不起作用。
编辑:对于那些希望看到我完整且正在工作的脚本的人,请访问这里:http : //pastebin.com/cFQzz4Up
bash
(和expr
)不能执行浮点运算,您需要借助bc
。
例如 :
$ IDLE=$(mpstat | grep "all" | cut -c 92-)
可以说$IDLE
是77.25。
现在您需要bc
:
$ IDLE=77.25
$ CPULD="$(bc <<<"100 - $IDLE")"
$ echo "$CPULD"
22.75
bc
对文件进行操作,因此我们可以通过STDIN传递操作字符串,尽管我在这里更喜欢使用string:
$ echo "100 - 45.34" | bc
54.66
$ bc <<<"100 - 45.34"
54.66
换句话说,要获得IDLE%的CPU,mpstat | grep "all" | cut -c 92-
您可以执行以下操作:
mpstat | grep -Po 'all.* \K[^ ]+$'
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句