问题描述
我最近安装了 12.04。当我尝试使用 gedit 编辑文件时,在关闭编辑文件或必须打开新终端之前,我无法使用终端。但我认为我在 11.04 中没有这个问题,但我不确定。无论如何可以避免这种情况并在编辑文件时使用相同的终端。
最佳答案
简答
在无响应的终端中:
-
点击
Ctrl
+Z
。 -
键入
bg
并输入。 -
键入
disown
并输入。
长答案
在无响应的终端中,点击 Ctrl
+ Z
,这将 “pause” 进程(或 “job”)并将控制台控制权返回给您。但是,您会注意到 gedit
变得无响应并且您无法使用它。
Extra: if you want to, you can execute the command
jobs
, you’ll notice that it’ll read Stopped for thegedit
command, that’s why you can’t use it.
要使作业在后台成功运行(即使 gedit
再次响应),请执行命令 bg
(意为后台)。您现在可以使用 gedit
了,同时可以自己获得提示。
Extra: now, if you execute
jobs
, you’ll notice that it’ll read Running.
你可以从一开始就克服这一切。当您从终端启动 gedit
时,将 &
添加到命令的末尾,就像这样 gedit /path/to/file &
。这将从一开始就在后台启动 gedit
(您可能需要点击 Enter
几次才能恢复控制台控制)。
Extra: if you were following these extra notes, you might have noticed that the second time you did
jobs
, you could see that bash added a&
to the end of thegedit
command.
一旦你习惯了这个系统,你可能会注意到,如果你关闭终端,gedit 也会终止,甚至没有确认对话框。为防止这种情况发生,请运行 disown
,这会将 gedit 进程与终端分离,将其从 jobs
返回的列表中删除。
次佳答案
只需输入:
gedit <filename-to-edit> &
这将立即向您返回命令提示符。
第三种答案
您可以使用 nohup
来防止 GUI 连接到终端:
nohup mupdf some.pdf &
这将允许您关闭要启动的终端,而不会关闭程序。
您还应该注意到,nohup 命令将使用您运行的命令的 stdout
和 stderr
创建一个文件。如果要防止这种情况,请在 &
之前添加 &>/dev/null
。
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
特定的。
This blog post explains both methods pretty well.
第五种答案
从 man gedit
:
-b, --background Run gedit in the background.
因此,如果您使用 -b
选项运行 gedit
,它将在后台启动:
gedit -b [FILE-NAME]
此外,接下来您可以为 gedit -b
创建一个别名(请参阅 here 如何创建永久别名):
alias gedit='gedit -b'
从现在开始,将来您可以正常使用 gedit [FILE-NAME]
,它将在后台启动。
第六种答案
只需输入:
gedit FILENAME & disown
在 bash 中以 &
结束命令会在后台运行该命令。但是,该过程仍然附加到终端。
如果没有 disown
,如果您关闭终端,gedit 将关闭,甚至不会提示您保存已编辑的文件。 disown
将后台进程与当前终端分离,因此如果您关闭终端,gedit 将继续正常运行。原来我错了,这不是 bash 的情况,但它是 zsh 的情况。但是,即使在 bash 中,您仍然需要在执行 ctrl
– z
和 bg
之后运行 detach
。
您可以在 bash
命令的手册页中找到有关 内置s jobs
、 disown
和 &
元字符的更多信息,尤其是标记为 “job control” 的部分。