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を起動します。
そこに何が問題なのかよくわかりません。
Debian 9.4 を実行しています2018-06-27-raspbian-stretch-lite
。
PSはもともとFirefoxを起動する前にすでに実行されていることを確認するための論理チェックがありましたが、Firefoxがまったく起動しないことに気づき、それを削除しました。
修正する同様の質問を見つけました。NetworkManager if-up.dスクリプトからGUIを起動します。
答え1
ネットワークイベントスクリプトはrootとして実行されますが、デスクトップ環境はおそらく(希望的に)そうではありません。
これは全体的に問題のあるアプローチのようです。何かが落ちた:
- Firefoxは、rootではなくログインしているユーザーとして実行する必要があります。
- FirefoxがXサーバーに接続するには、Xサーバーに認証できる必要があります(
~/.Xauthority
および参照man xauth
)。 HOME
デスクトップセッション(などXDG_RUNTIME_DIR
)で正しく機能するには、Firefox環境を設定する必要があります。
ネッ~/.xinitrc
いいですね。
答え2
ありがとう、Fadabi Nawiに行ったことがありますか?、答えは次のとおりです。
su pi -c "DISPLAY=:0.0 /usr/bin/firefox-esr &"
コア:
- suを一般的に使用する実際のユーザー(
pi
私の場合) - そこにディスプレイ番号を渡します(TODO:想定するのではなく、実際のディスプレイ番号を調べてください。
:0
) - 重要代わりに Firefox 実行可能ファイルのフルパスを使用してください。
firefox-esr