부팅 시 실행되는 데비안 패키지가 있습니다.
저는 upstart를 사용하고 있는데 필요한 것 같아요종속성 추가시작 구성으로:
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)
나는 여전히 내 상황에 맞게 조금 개선하고 싶습니다.
왜냐하면 나는 eth보다 wlan을 기다리는 것을 선호하지만 다음과 같은 와일드카드를 사용할 수 있는지 확실하지 않기 때문입니다.
IFACE=wlan*
하지만 이는 인터페이스를 사용할 수 있을 때까지 기다리는 것이 아니라 ifconfig
인터페이스가 인터넷에 연결될 때까지 기다리는 것 같습니다.
답변1
마침내 upstart 사전 출시 스크립트를 사용하여 해결 방법을 찾았습니다.
pre-start script
while [ -z "$(ifconfig | grep wlan)" ]
do
sleep 1
done
sleep 5
end script