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。
我不确定那里有什么问题。
这是2018-06-27-raspbian-stretch-lite
运行 Debian 9.4。
PS 另外,我最初在尝试启动之前有逻辑检查 Firefox 是否已经运行,但是一旦我意识到 Firefox 根本没有启动,我就删除了它
UPDATE发现类似问题:Start a GUI in NetworkManager if-up.d script
网络事件脚本以 root 用户身份运行,但您的桌面环境可能(希望)不是。
一般来说,这似乎是一个有问题的方法。缺少一些东西:
~/.Xauthority
和man xauth
)。HOME
等XDG_RUNTIME_DIR
)我建议尝试一种不同的方法,例如让网络脚本将网络状态(通过管道/临时文件/DBus)传达给已经在用户会话中运行的东西(例如从
~/.xinitrc
启动),然后根据需要启动 GUI 应用程序。感谢 Fadabi Nawi,答案如下:
关键点:
pi
在我的情况下):0
)firefox-esr