Answers:
在无响应的终端中:
bg
和输入。disown
和输入。在无响应的终端中,按Ctrl+ Z,这将“暂停”进程(或“作业”),并将控制台控件返回给您。但是,您会注意到它gedit
变得无响应,无法使用它。
附加:如果愿意,可以执行命令
jobs
,您会注意到该命令将显示为Stoppedgedit
,这就是为什么您不能使用它的原因。
要使作业成功在后台运行(即gedit
再次使响应),请执行命令bg
(表示后台)。现在,您可以使用gedit
,并同时提示自己。
附加:现在,如果执行
jobs
,您会注意到它显示为Running。
您可以从一开始就克服所有这些问题。gedit
从终端启动&
时,请在命令末尾添加一个,这样的事情gedit /path/to/file &
。这将从一开始就gedit
在后台启动(您可能需要打Enter几次才能重新获得控制台控件)。
附加:如果您遵循这些附加说明,您可能已经注意到第二次这样做了
jobs
,您可能会看到bash&
在gedit
命令末尾添加了a 。
一旦习惯了该系统,您可能会注意到,如果关闭终端,gedit也将终止,甚至没有确认对话框。为防止这种情况发生,请运行disown
,它将从终端分离gedit进程,并将其从所返回的列表中删除jobs
。
您可以使用nohup
来防止将GUI附加到终端:
nohup mupdf some.pdf &
这将允许您关闭正在从中启动的终端,而无需关闭程序。
您还应该注意,nohup命令将使用您运行的命令的stdout
和创建一个文件stderr
。如果要防止这种情况,请在&>/dev/null
之前添加&
。
nohup mupdf some.pdf &>/dev/null &
nohup.out
包含该命令输出的文件。如果要查看错误消息,这很有用。如果您不希望创建文件,请按如下所示添加重定向:nohup mupdf some.pdf &>/dev/null &
您也可以使用disown
命令。当您已经开始不再需要附加到终端的过程时,此功能特别有用。
如果我没记错的话,基本过程是这样的:
$ > firefox #Oops
Ctrl + z #Suspend the process
$ > bg #Push the process to the background
$ > disown #Detach most recent process started or stopped
$ > exit #Terminal gone!
注意,disown是bash
特定的。
firefox & disown
来自man gedit
:
-b, --background Run gedit in the background.
因此,如果gedit
使用-b
option 运行,它将在后台启动:
gedit -b [FILE-NAME]
此外,接下来您可以为其创建别名gedit -b
(请参见此处如何创建永久别名):
alias gedit='gedit -b'
从现在开始,将来您可以gedit [FILE-NAME]
照常使用,它将在后台启动。
只需输入:
gedit FILENAME & disown
用&
bash 结尾的命令在后台运行该命令。但是,该过程仍附加在终端上。
不使用原来我错了,bash并不是这种情况,而zsh就是这种情况。您仍然需要disown
,如果关闭终端,则gedit将关闭,甚至不会提示您保存编辑的文件。disown
将后台进程与当前终端分离,因此,如果您关闭终端,则gedit将继续正常运行。detach
在ctrl- z和之后执行bg
,即使是在bash中。
你可以找到更多关于内置插件jobs
,disown
并&
在元字符手册页的bash
命令,尤其是标有“作业控制”一节。
disown
我能够在终端关闭后保持gedit打开。我听不懂您所说的“ bash不是这种情况,zsh是这种情况”