使用crontab来实现centos7服务守护
问题的出现:
上一篇文章通过使用服务来使frp在后台保持运行,但是由于服务运行早于网络初始化完成,故而并不能真正实现后台运行(甚至都不能实现运行),为了实现真正的后台运行以及保证服务关闭后自动重启服务,就进行了如下探索
思路
定时检查要保活的服务是否在运行,没有运行的话就重新运行它
步骤
- 首先写一个保持程序后台运行的shell
frpc_keeper.sh
#!/bin/sh
pid1=$(systemctl status frpc)
pid2=$(echo $pid1 | grep "Active")
pid=$(echo $pid2 | grep "running")
sendMessage(){
#这里提供一个自用的发邮件接口,请不要滥用
# http://wol.sharepeople.cn/api/forwardEmail.php?email=youeremail@xx.com&message=12456&title=电脑开机
curl -d "email=974830507@qq.com&message=本地主机已恢复Frp服务&title=Frp服务恢复通知" "http://wol.sharepeople.cn/api/forwardEmail.php" > /dev/null
}
restartFrpcService(){
systemctl start frpc
}
if [ "$pid" == "" ]
then
echo "restart"
restartFrpcService &
sendMessage &
else
echo "no need"
fi
exit 0
- 说明,Linux下的任务调度分为两类:系统任务调度和用户任务调度,这里用系统调度了
- 编辑系统任务调度文件
sudo vim /etc/crontab
然后添加一个任务
- 在文件尾部添加
*/2 * * * * root sh /home/sh/frpc_keeper.sh
结束
每两分钟检查一次服务是否正在运行,服务停止运行后会自动重启并给你预设的邮箱发邮件。
本作品所有权归 齐大 所有,转载请写明出处。