trojan
trojan copied to clipboard
解决每过一段时间需重启trojan服务才能正常访问的问题
crontab 定时任务
* * * * * sh ~/vpn.sh > /dev/null
shell 脚本内容
#!/bin/bash
# 设置要检查的URL
URL="需要检测的URL"
# 使用curl命令发送HTTP请求并提取状态码
CODE=$(curl --connect-timeout 8 -I -L $URL 2>/dev/null | head -1 | awk '{print $2}')
# 获取当前时间
TIME=$(date '+%Y-%m-%d %H:%M:%S')
# 获取当前日期
DAY=$(date +%Y%m%d)
# 定义日志文件路径
LOGFILE="/var/log/trojanlog/check-trojan${DAY}.log"
# 如果日志目录不存在,则创建它
[ ! -d "/var/log/trojanlog" ] && mkdir -p /var/log/trojanlog
# 检查HTTP状态码是否为200
if [ "$CODE" -eq 200 ]; then
# 如果状态码为200,则将当前时间和"ok"追加到日志文件中并退出脚本 这个可不写,只保留 `exit`即可
echo "${TIME} ok" >> ${LOGFILE}
exit
else
# 如果状态码不是200,则重新启动trojan服务并记录重启信息到日志文件中
systemctl restart trojan
echo "${TIME} 已重启trojan服务" >> ${LOGFILE}
fi
# 删除7天前的日志文件
find /var/log/trojanlog/ -name "*.log" -type f -mtime +7 -delete
Tip: 需要检测的url最好设置成网站的静态资源文件,一旦服务挂掉,静态资源不可访问,此时我们可以进行重启操作 每个网站打包后的静态资源文件都不相同,请自行copy,如下:
resolved
自动重启是解决了,但是根本原因是什么呢,有哪位大神知道吗