我不确定这种情况是如何或为什么发生的,但有时当我通过终端打开程序时,终端会继续附加到程序上。我可以理解“sudo nautilus”之类的情况,但对于常规程序来说,这非常烦人。
我无法将终端与程序分离,因为如果我按 ctrl+c,它会关闭该程序,如果我退出终端,那么该程序也会关闭。
几个问题:
- 为什么会发生这种情况?
- 如何手动激活/停用此功能?
- 如何将终端与程序分离?
如果我问得太多,我也能理解。在这种情况下,我甚至不知道如何通过谷歌找到答案,所以如果你能告诉我任何讨论这个问题的资源,或者告诉我正在发生的函数的名称,那就太好了。
谢谢。
答案1
在开始该程序时,您最好提前做好准备。
启动时,您可以使用多种选项。您可以使用禁止选项,而如果您将其发送到后台并关闭终端,它将继续运行。
这是屏幕选项。Screen 是一个应用程序。默认情况下未安装。您可以使用以下命令安装它:
$ sudo apt install screen
screen
然后您可以通过在终端运行来启动屏幕会话。
$ screen
而在屏幕您可以通过按键盘快捷键调出帮助屏幕:Ctl+A然后按?。Ctl+A使屏幕进入监听模式,以便 a 命令可以跟随键。
在屏幕终端中启动的应用程序将在关闭终端时继续运行。您可以在不同的登录名上连接到屏幕终端……甚至可以从不同的计算机连接到屏幕终端并继续使用该应用程序。
Screen 具有您在问题中描述的功能detatch
。reconnect
笔记:
要分离终端运行屏幕,只需关闭它即可。要将终端连接到先前分离的屏幕,请执行以下步骤:
- 找到您要附加的屏幕:
$ 屏幕列表
- 使用其中一个附加选项附加到列表中的一个:
$ screen -D -r [所需的分离屏幕]
答案2
简单来说,当你从终端运行脚本或应用程序时,通常需要获取一些有关其正在执行的操作的信息。在此过程中,你无法运行任何其他命令。这是前台进程。但是,在某些情况下,你只想运行应用程序,而它在后台运行,这称为后台进程。
要启动应用程序并将其发送到后台,只需在命令末尾添加 &。
但是如果你的应用程序已经在运行,你可以使用Ctrl+将其发送到后台Z。在这种情况下,你可以使用fg
命令将进程返回到前台。