从终端运行应用程序时自动拒绝应用程序

从终端运行应用程序时自动拒绝应用程序

从终端启动应用程序后,如何自动拒绝该应用程序?

例如:如果您启动终端并运行firefox应用程序将启动,但当您关闭终端时,firefox 也会关闭。为了避免无意中关闭从终端启动的应用程序,可以首先使用 ampersant: 将它们置于后台,firefox &这也恢复了使用该终端提示符的能力​​。接下来,您可以使用应用程序的进程 ID (PID) 从同一终端取消该应用程序的所有权,请参阅下面的示例:

$ firefox & 
$ ps | grep firefox
14917 pts/6    00:00:00 firefox
$ disown 14917

该应用程序现在独立于您正在使用的终端运行,关闭终端将不再终止该应用程序。

但是如何在每次启动应用程序时自动执行此操作呢?

答案1

最简单的方法是执行:

daemon firefox

这样您就可以继续使用/关闭终端本身

答案2

编辑:更好的答案由 IV 提供。

要自动执行此操作,您可以使用 bash 别名。如果将以下行添加到主目录中的 .bash_aliases 文件中,则可以my_application使用以下命令从终端启动任何应用程序,同时自动将其置于后台,然后从该终端取消它的所有权s my_application

# start programs from shell but immediately disown them
startAndDisown() {
    $1 & disown $! 
}
alias s=startAndDisown

请注意,$!自动返回最后一个异步作业的 PID。

答案3

firefox & disown $!对我不起作用,但对我有用的类似解决方案是firefox&;disown

另一种不涉及的解决方案disown是使用GNU Screen。即使您关闭终端窗口,它也会保留您的终端会话。然而,它的实用性取决于您如何使用终端。如果您一次只使用一个终端窗口,这是一个很好的解决方案。如果您使用更多终端,则更少。使用您最喜欢的包管理器安装 screen,然后每次打开终端类型screen -r(或者screen如果没有 screen 会话正在运行)。这样您就不必担心关闭终端。这是一个非常小众的解决方案,但它可能适合您。

相关内容