Openwrt/LEDE中监控并重启V2ray
我的路由器系统是 openwrt/LEDE 。里面安装了 v2ray 作为游戏加速工具。
之前工作得好好的,最近遭遇的问题是 v2ray 进程异常退出,且不再自己启动。
因为我的加速方案是对所有的境外服务器加速,因此,一旦 v2ray 异常退出,我就无法访问境外的网站了。体验很糟糕。
此文章 来源:
https://master--itlaws.netlify.app/post/openwrt-v2ray/
思路
我对 openwrt/LEDE 不熟。不知道如何在 openwrt/LEDE 中像普通的 Linux 那样安装 supervisor 之类的进程监控、重启工具,只好想一个凑合的解决方案:
- 检测 v2ray 进程是否存在;
- 如果 v2ray 不存在,就启动 v2ray 进程;
- 定期执行上面的步骤 1 和步骤 2 。
其中:
第 1 个小目标,可通过 ps | grep v2ray
实现。
第 2 个小目标,可通过 if
语句判断。
第3个小目标,可通过 crontab -e
来实现。
实现步骤1和步骤2的脚本
先看看 ps | grep v2ray
的结果:
|
|
如果 v2ray 进程异常退出, ps | grep v2ray
的结果就只有grep v2ray
的那一行。判断行数的工具是wc -l
。因此,如果 ps | grep v2ray | wc -l
的结果是1,就说明 v2ray
进程异常退出了。
脚本 check_v2ray.sh
内容如下:
|
|
update: 上面的脚本有个小坑。
因为我的脚本名称是 check_v2ray.sh
,且通过 cron
定期运行 check_v2ray.sh
,导致ps | grep v2ray
有时候会得到如下的运行结果:
|
|
这时候,总行数为 3 ,即使 v2ray
异常退出了,总行数依然是 2 ,不是 1。
所以,干脆把检测命令改为ps | grep /koolshare/v2ray/v2ray.json | wc -l
了。
脚本 check_v2ray.sh
内容如下:
|
|
实现步骤3的方法
上面的脚本 check_v2ray.sh
保存为 /koolshare/scripts/check_v2ray.sh
。
运行下面的语句赋予其可执行权限。
1
|
sudo chmod +x /koolshare/scripts/check_v2ray.sh |
然后 crontab -e
或者 nano /etc/crontabs/root
,增加一行:
|
|
表示每分钟运行一次 /koolshare/scripts/check_v2ray.sh
。如果是每两分钟运行一次,就改为:
|
|
本文由 我爱PHP169 作者:admin 发表,其版权均为 我爱PHP169 所有,文章内容系作者个人观点,不代表 我爱PHP169 对观点赞同或支持。如需转载,请注明文章来源。