Linux shell怎么计算浮点数?

linux下bc计算工具

bc是一个Linux下的计算工具,可以用于浮点数的运算。

计算浮点数例子

if [ `echo "60.3 > 57.4" | bc` -eq 1 ];
then
  echo "Y"
else
  echo "N"
fi

实战脚本内容

#!/bin/bash
#  此脚本用于比较浮点数的大小。这里用来判断kube-apiserver内存使用率大于百分之60 就kill掉kube-apiserver进程

USAGE=`ps -aux | grep 'kube-apiserver' | grep -Ev "grep|kube-scheduler" | awk '{print $4}'`
LIMIT=75


if [ `echo "$USAGE > $LIMIT" | bc` -eq 1 ];then
    kill -9 $(/usr/sbin/pidof kube-apiserver)
else
    echo "$USAGE less than $LIMIT"
fi

terminal终端3秒执行一次,循环执行

因为我的kubernetes平台用了Gloo这个API Gateway,但是在使用过程中出现了很多的问题,其中包括一个致命性的因素:只要配置不当或者使用不当导致错误,就会将错误塞满整个kubernetes集群,导致内存疯狂跑高,直至服务器宿主机内存被吃完,然后宕机,因此这里最直接的就是看到我的kube-apiserver进程内存跑高。

排查问题过程中才需要用到这个脚本来临时解决问题。

因为不知道多久会吃完内存,因此设置3秒钟执行一次脚本来进行判断内存使用率是否到达百分之75,到达百分之75就kill掉kube-apiserver进程。

while true
do
  /usr/bin/bash /root/apiserver.sh
  if [ $? -eq 0 ]
  then
    echo "Script excute successfully..."
    sleep 3
  fi
done
© 版权声明
THE END