当您从终端运行 Firefox 或 Firefox 选项卡,然后终止该终端时,Firefox 或 Firefox 选项卡就会消失

当您从终端运行 Firefox 或 Firefox 选项卡,然后终止该终端时,Firefox 或 Firefox 选项卡就会消失

我正在制作这个非常好的脚本,它应该通过为我打开应用程序来让我的生活变得更轻松一些,但我在启动 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 关闭终端窗口。

相关内容