欢迎光临
我们一直在努力

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

今天小轩的个人博客挂了,是因为使用的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

赞(0) 打赏
0

评论 抢沙发

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

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏