我有一个在启动时运行的 debian 包。
我正在使用新贵,我想我需要向新贵配置添加依赖项:
start on someProgram
我不确定是哪个程序,但我没有使用network-manager
它,它已被禁用。我正在做这样的事情:
ethernet=$(ifconfig -a | grep Ethernet | grep ^e | cut -d' ' -f1)
wifi=$(ifconfig -a | grep wl | cut -d' ' -f1)
ping -I $ethernet -c 1 8.8.8.8 \
|| ping -I $wifi -c 1 8.8.8.8 \
|| echo "not online"
问题是ifconfig
并不总是显示$wifi
界面,因为程序在启动过程中打开得太早了。
ping -I $ethernet -c 1 8.8.8.8
当它应该成功时也会失败。
如果我这样做sleep 30
那么ping
它工作正常。
有谁知道我应该等待什么包才能让它按预期工作?
我在嵌入式设备上使用 Ubuntu 14.04。
3.0.36+ #16 SMP PREEMPT Tue Oct 31 19:17:57 EDT 2017 armv7l armv7l armv7l GNU/Linux
我以为我有一个答案:
我发现可以直接引用网络接口而不是包:
start on (local-filesystems and net-device-up IFACE!=lo)
我仍然想针对我的情况稍微改进一下。
因为我宁愿等待 wlan 而不是 eth 但我不确定我是否可以使用像这样的通配符:
IFACE=wlan*
但似乎这并没有等待接口可用,ifconfig
而是等待该接口具有活动的 Internet 连接。
我最终找到了使用 upstart 预启动脚本的解决方法: