네트워크 연결이 활성화되고 실행된 후 비 GUI 응용 프로그램 실행

네트워크 연결이 활성화되고 실행된 후 비 GUI 응용 프로그램 실행

저는 Debian 기반의 Raspbian을 사용하고 있습니다. 내 Raspberry Pi가 자동으로 데스크탑으로 부팅됩니다. 나는 C로 작성되고 g++를 사용하여 실행 파일로 컴파일된 작은 프로그램을 가지고 있습니다. 이 프로그램을 실행하려면 네트워크 연결이 필요하며 일부 데이터를 터미널에 출력합니다. 멋진 것은 없습니다.

그것을 사용하려면 LXterminal 창을 열고 sudo 권한으로 프로그램을 수동으로 실행해야 했습니다.

sudo ./Desktop/rpiMainProgram

내 질문은: 네트워크 연결을 설정한 후 터미널 기반 프로그램을 자동으로 시작하려면 어떻게 해야 합니까?


나는 사용한다다이얼3G 어댑터를 자동으로 연결하려면 패스하세요 /etc/network/interface. 연결이 유효합니다. 핑과 서핑을 할 수 있어요

auto ppp0
iface ppp0 inet wvdial

나는 팔로우한다이 튜토리얼필요한 경우 wvdial을 설정하십시오.

방법을 참조하십시오bash(?) 스크립트를 호출하기 위해 post-upin 메소드를 사용합니다 . /etc/network/interfaces하지만 이 방법을 사용하면 GUI가 아닌 응용 프로그램을 실행할 수 없습니다.

포기하기 전 마지막 시도는

auto ppp0
iface ppp0 inet wvdial
post-up LXterminal "sudo ./Desktop/rpiMainProgram"

답변1

다음과 같은 내용을 파일에 넣을 수 있습니다 /etc/rc.local(테스트되지 않음).

{ while ! ping -c 1 -W 1 8.8.8.8; do  sleep 1; done; /home/youruser/Desktop/rpiMainProgram > /home/youruser/Desktop/rpiMainProgram.log 2>&1; }&

ping -c 1 -W 1 8.8.8.8: ping 패킷을 보내고 1초 동안 응답을 기다립니다.

while명령이 상태 코드 >0(즉, 실패)으로 종료되는 동안 ping루프는 계속됩니다 .

네트워크 연결이 있고 8.8.8.8성공적으로 ping할 수 있으면 루프가 중지되고 프로그램이 실행됩니다(이렇게 호출하면 효과가 있는지 확인하세요. 예를 들어 다음을 pwd사용하여

이를 통해 {}이를 단일 명령 유형으로 변환하여 를 사용하여 전체를 백그라운드로 푸시할 수 있습니다 &. 그렇지 않으면 /etc/rc.local네트워크가 생길 때까지 나머지를 차단합니다 .

더 우아한 솔루션이 있을 수 있지만 내 Pi에도 비슷한 솔루션이 있습니다.

답변2

터미널 멀티플렉서에서 프로그램을 시작하십시오.화면또는멀티플렉서. 이를 사용하여 프로그램을 실행하고 상호 작용할 때 연결할 수 있는 별도의 터미널을 만듭니다. 예를 들어 화면의 경우 시작 중에 다음 명령을 실행합니다.

screen -S rpiMainProgram -d -m /home/nixda/Desktop/rpiMainProgram

그리고 이를 사용하여 프로그램이 실행 중인 화면 인스턴스에 연결합니다.

screen -S rpiMainProgram -r -d

스크린 인스턴스에서 분리하려면 Ctrl+를 누른 A다음 를 누르세요 d.

데비안에서는 네트워크 인터페이스를 활성화한 후 프로그램을 실행하려면,스크립트 추가/etc/network/if-up.d. 어떤 인터페이스가 작동되고 있는지 확인해야 합니다(특히 루프백 인터페이스가 작동 중일 때 프로그램을 시작하고 싶지는 않습니다). /etc/network/if-up.d/local_rpiMainProgram유사한 콘텐츠로 콘텐츠 만들기

#!/bin/sh
case "$IFACE" in
  ppp0) screen -S rpiMainProgram -d -m /home/nixda/Desktop/rpiMainProgram
esac

또는

#!/bin/sh
if ping -q -W1 -c1 8.8.8.8; then
  screen -S rpiMainProgram -d -m /home/nixda/Desktop/rpiMainProgram
fi

답변3

rungetty를 사용하여 사용하지 않는 가상 터미널에서 이를 실행하면 정상적으로 작동합니다. 제어 Alt FN출력을 봅니다.

관련 정보