深圳SEO
欢迎您光临浏览!

根据CPU负载及内存使用率自动重启FRPS服务进程linux脚本

一个用于监控linux服务器负载及内存占用,自动重启FRPS的脚本,当负载或内存占用达到设置值后,便自动重启FRPS进程以避免宕机。

代码如下:

#!/bin/bash
#filenameauto_reboot.sh

#设置最大内存占用百分比
PID_MEM_MAX=85

#设置最大系统负载
SYS_LOAD_MAX=3

#设置需要监控的服务名称
NAME_LIST=frps

forNAMEin$NAME_LIST
do
#初始化内存统计
PID_MEM_SUM=0

#获取该程序总进程数
PID_NUM_SUM=`psaux|grep$NAME|wc-l`

#列出每个进程内存占用百分比
PID_MEM_LIST=`psaux|grep$NAME|awk{print$4}`

#计算所有进程总内存占用
forPID_MEMin$PID_MEM_LIST
do
PID_MEM_SUM=`echo$PID_MEM_SUM+$PID_MEM|bc`
done

#获取最近一分钟系统负载
SYS_LOAD=`uptime|awk{print$(NF-2)}|seds/,//`

#比较内存占用和系统负载是否超过阀值
MEM_VULE=`awkBEGIN{print($PID_MEM_SUM=$PID_MEM_MAX?1:0)}`
LOAD_VULE=`awkBEGIN{print($SYS_LOAD=$SYS_LOAD_MAX?1:0)}`

#如果系统内存占用和系统负载超过阀值,则进行下面操作。
if[$MEM_VULE=1]||[$LOAD_VULE=1];then
#写入日志
echo$(date+%y-%m-%d%H:%M:%S)killall$NAME(MEM:$PID_MEM_SUM,LOAD:$SYS_LOAD)/var/log/autoreboot.log
#正常停止服务
pkillfrps
sleep3
#强制关闭
pkill$NAME

#重启
/root/frp/frps-c/root/frp/frps.ini
#写入日志
echo$(date+%y-%m-%d%H:%M:%S)start$NAME(MEM:$PID_MEM_SUM,LOAD:$SYS_LOAD)/var/log/autoreboot.log
else
echo$NAMEveryhealth!(MEM:$PID_MEM_SUM,LOAD:$SYS_LOAD)/dev/null
fi
done

添加计划任务,设置每分钟检查一次

代码示例:

crontab -e

* * * * * /bin/bash /root/auto_reboot.sh

请确保您的Linux系统中已经安装了bc,否则会出现错误。查看是否安装了bc可以使用命令:

bc -v

如果没有安装,centos可以用 yum -y install bc 安装,然后执行命令:

sh /root/auto_reboot.sh

本文出自深圳SEO,未经允许不得转载:深圳SEO-深圳SEO技术分享博客-微笑 » 根据CPU负载及内存使用率自动重启FRPS服务进程linux脚本
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址