`/etc/network/if-up.d` 스크립트가 실행되지만 GUI 애플리케이션(예: firefox-esr)을 시작하지 않습니다.

`/etc/network/if-up.d` 스크립트가 실행되지만 GUI 애플리케이션(예: firefox-esr)을 시작하지 않습니다.

firefox-esr네트워크를 사용할 수 있게 되면 시작 해야 합니다 .

이것이 내가 얻는 것입니다:

sudo tee "/etc/network/if-up.d/upif" > /dev/null << EOFBOOT
#!/bin/bash
DISPLAY=":0"
if [[ "\$IFACE" = "eth0" || "\$IFACE" = "wlan0" ]]; then
    echo "\$(date) \$IFACE" >> /var/log/upif
    firefox-esr &
fi
EOFBOOT
sudo chmod +x "/etc/network/if-up.d/upif"

로그 파일에 날짜와 인터페이스 이름이 표시됩니다. 이는 스크립트가 실행되지만 firefox-esr시작되지 않음을 의미합니다.

내가 시도한 것:

  • 다음에 추가DISPLAY=":0"
  • grep -inR "firefox" /var/log
  • 실행 파일의 전체 경로를 사용하십시오./usr/bin/firefox-esr
  • 사용sudo firefox-esr &
  • 후행 제거&

아무것도 도움이 되지 않습니다. 그러나 IFACE="eth0"Shebang 아래에 놓고 sudo /etc/network/if-up.d/upif수동으로 실행하면 위에 표시된 정확한 스크립트가 작업을 수행하고 Firefox를 시작합니다.

거기에 무슨 문제가 있는지 잘 모르겠습니다.

데비안 9.4를 실행 중 입니다 2018-06-27-raspbian-stretch-lite.

PS 또한 원래는 Firefox를 시작하기 전에 이미 실행 중인지 확인하기 위한 논리 검사가 있었지만 Firefox가 전혀 시작되지 않는다는 사실을 깨닫고 이를 제거했습니다.

고쳐 쓰다비슷한 질문을 찾았습니다.NetworkManager if-up.d 스크립트에서 GUI를 시작합니다.

답변1

네트워크 이벤트 스크립트는 루트로 실행되지만 데스크탑 환경은 아마도 (희망적으로) 그렇지 않을 것입니다.

이는 전반적으로 문제가 있는 접근 방식인 것 같습니다. 무언가가 빠졌어:

  • Firefox는 루트가 아닌 로그인한 사용자로 실행되어야 합니다.
  • Firefox가 X 서버에 연결하려면 X 서버에 인증할 수 있어야 합니다( ~/.Xauthority및 참조 man xauth).
  • HOME데스크톱 세션( 등 XDG_RUNTIME_DIR) 에서 제대로 작동하려면 Firefox 환경을 설정해야 합니다.

네트워크 스크립트가 네트워크 상태(파이프/임시 파일/DBus를 통해)를 사용자 세션에서 이미 실행 중인 항목(예: boot 에서 ~/.xinitrc)에 전달한 다음 필요에 따라 GUI 응용 프로그램을 시작하는 것과 같은 다른 접근 방식을 시도하는 것이 좋습니다.

답변2

Fadabi Nawi에게 감사드립니다., 답변은 다음과 같습니다.

su pi -c "DISPLAY=:0.0 /usr/bin/firefox-esr &"

핵심:

관련 정보