时间:2020年07月12日 | 作者 : liuhui | 分类 : Linux | 浏览: 4092次 | 评论 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>
推荐您阅读更多有关于“”的文章
Powered By Z-Blogphp
分享:
支付宝
微信