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 &"
핵심:
- su를 일반적으로 사용하는 실제 사용자(
pi
내 경우에는) - 거기에 디스플레이 번호를 전달합니다(TODO:가정하는 대신 실제 디스플레이 번호를 알아보세요.
:0
) - 중요한대신 Firefox 실행 파일의 전체 경로를 사용하십시오.
firefox-esr