我正在制作这个非常好的脚本,它应该通过为我打开应用程序来让我的生活变得更轻松一些,但我在启动 Firefox(或任何类似的浏览器)时遇到了问题(或者任何类似的浏览器;Chromium 也会发生同样的情况)。
这就是我的脚本的作用:我有一个初始脚本,它启动一个终端窗口并在该窗口中运行我的脚本。该脚本通过 XFCE 的会话和启动(在 bash 中,在新的 xfce 终端窗口中)启动,并且工作正常。
现在我的第二个脚本如下所示:
foo=string
grep ';;' ~/sh.sh
read foo
#firefox &>/dev/null &
#disown
for (( i=0; i<${#foo}; i++ )); do
case ${foo:$i:1} in
0) nohup mypaint &>/dev/null & ;;
1) exo-open --launch TerminalEmulator ;;
2) gtk-launch firefox.desktop ;;
3) ~/shsh/lutris.sh ;;
4) nohup /usr/lib/chromium/chromium &>/dev/null & ;;
5) nohup mypaint &>/dev/null & ;;
6) nohup steam &>/dev/null & ;;
esac
done
sleep 5 && kill -1 $PPID
问题是:当我通过此脚本启动 Firefox 时,具体取决于我尝试使用的将 Firefox 进程与 shell 分离的方法,会发生以下两件事之一:Firefox 正在使用终端窗口关闭,或者终端窗口关闭且选项卡崩溃(并且 addblock 也不再起作用)。
这是我迄今为止使用过的方法:
- 和
nohup
的多种不同组合&>/dev/null &
disown
gtk-launch firefox.desktop &
和disown
(firefox &)
并且disown
(如果您只是输入它,那么这个效果非常好,但在脚本中的工作方式不同)
有趣的是,当通过脚本关闭终端窗口时,它确实firefox
成为了进程的子进程,但仍然死亡,或者选项卡仍然崩溃。init
所以在这一点上,要么 Firefox 是个混蛋,要么是我漏掉了一块拼图。
答案1
我想我已经找到了一个解决方法,那就是:xfce4-terminal --execute nohup firefox
。它打开一个新的终端窗口,执行命令,由于某种原因关闭所述窗口,如果主 shell 被 杀死kill -1
,它不会杀死 Firefox - 也不会崩溃选项卡。
答案2
如果您按照以下方式操作,Firefox-esr 不会崩溃:
从终端或通过 .sh 脚本启动 Firefox:
nohup firefox-esr --detach & disown
手动或通过kill 关闭终端窗口。