由于某些程序需要在网络 up 的状态下运行,因此在开机自启时,执行顺序很重要,特别是使用 systemd 的系统。
虽然 ss-tproxy.service 中加入了 network-online.target 依赖,但不同系统对网络 up 的定义并不相同,有兴趣的可以看下 systemd 的官方文档:https://systemd.io/NETWORK_ONLINE/。
如果遇到开机自启失败的问题,可以在 pre_start 钩子函数中,添加等待网络就绪的代码,最简单的办法,就是 ping 网关,只要网关能 ping 通,就说明网络 up 了:
pre_start() { # 只要 ping 失败,就一直等待,请修改为实际的网关 IP while ! ping -c1 -W1 192.168.1.1 &>/dev/null; do echo "waiting for network up [$((++i))] ..." sleep 1 done }
There was an error while loading. Please reload this page.