请启用 Javascript 以查看内容

shell计算浮点数

 ·   ·  ☕ 2 分钟  ·  ✍️ ayunw

linux下bc计算工具

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

计算浮点数例子

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

实战脚本内容

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
#!/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进程。

1
2
3
4
5
6
7
8
9
while true
do
  /usr/bin/bash /root/apiserver.sh
  if [ $? -eq 0 ]
  then
    echo "Script excute successfully..."
    sleep 3
  fi
done
                                    ----- 如果文章对你有用,就请我喝杯咖啡吧! -----
您的鼓励是我最大的动力
alipay QR Code
wechat QR Code

Avatar
作者
ayunw
尼古丁的绑架没有救赎,我们皆是上瘾的囚徒


目录