当前位置:网站首页 / Linux / 正文

shell脚本监控网站若打不开就重启frps程序

时间:2020年07月12日 | 作者 : liuhui | 分类 : Linux | 浏览: 3652次 | 评论 0

阿里云限量代金券 | 此广告位出租25元/月

今天博士的博客挂了,是因为使用的frps服务器出现问题导致,手动重启frps就恢复访问了,为了防止下次再遇到这个问题,博士用脚本实现当服务挂了以后除了重启以外,还将重启行为记入到日志文件中,方便以后我们查看什么时候服务被重启了,最终代码如下:

#!/bin/sh

# 获取脚本目录
shell_folder=$(cd `dirname $0`; pwd)

while true
do
    header=`curl -I http://diannaobos.com:80`
    if [[ $header =~ 'HTTP/1.1 200 OK' ]]; then
        echo 'ok';
    else
        # 重启服务并记录日志
        systemctl restart frps
        echo `date +%Y-%m-%d\ %H:%M:%S` "restart" >> $shell_folder/frps.restart.log
    fi
    # 每隔10秒检查一次
    sleep 10s
done

创建脚本文件frpsjk.sh将上面的代码添加进去

执行命令nohup sh ./frpsjk.sh &就启动了一个守护进程,实现了每隔10秒检查一次服务是否运行正常,如果挂掉就会重启的功能,并且还会记录到日志中。


如果你是在Ubuntu服务器上运行该命令,可能会遇到这个错误[[: not found,这是因为sh只是一个符号链接,最终指向是一个叫做dash的程序,自Ubuntu 6.10以后,系统的默认shell /bin/sh被改成了dash。dash(the Debian Almquist shell) 是一个比bash小很多但仍兼容POSIX标准的shell,它占用的磁盘空间更少,执行shell脚本比bash更快,依赖的库文件更少,当然,在功能上无法与bash相比。所以在Ubuntu上我们需要指定使用bash,即nohup bash ./frpsjk.sh &。


如何取消服务自动重启

如果有一天,你想关闭frps服务,守护进程就会检测到该服务挂掉,并自动重启该服务。导致你想关闭该服务也不行了。所以我们首先要先关闭守护进程,如何关闭呢?我们可以使用jobs命令查看守护进程ID,然后杀掉该进程。

jobs -l
kill -9 <id>


推荐您阅读更多有关于“”的文章

猜你喜欢

网站分类
关注电脑博士
友情链接

分享:

支付宝

微信