当前位置: 首页>>技术教程>>正文


gedit 命令运行时我无法使用终端

问题描述

我最近安装了 12.04。当我尝试使用 gedit 编辑文件时,在关闭编辑文件或必须打开新终端之前,我无法使用终端。但我认为我在 11.04 中没有这个问题,但我不确定。无论如何可以避免这种情况并在编辑文件时使用相同的终端。

最佳答案

简答

在无响应的终端中:

  1. 点击 Ctrl + Z

  2. 键入 bg 并输入。

  3. 键入 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 the gedit 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 the gedit command.

一旦你习惯了这个系统,你可能会注意到,如果你关闭终端,gedit 也会终止,甚至没有确认对话框。为防止这种情况发生,请运行 disown ,这会将 gedit 进程与终端分离,将其从 jobs 返回的列表中删除。

次佳答案

只需输入:

gedit <filename-to-edit> &

这将立即向您返回命令提示符。

第三种答案

您可以使用 nohup 来防止 GUI 连接到终端:

nohup mupdf some.pdf &

这将允许您关闭要启动的终端,而不会关闭程序。

您还应该注意到,nohup 命令将使用您运行的命令的 stdoutstderr 创建一个文件。如果要防止这种情况,请在 & 之前添加 &>/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 page for disown

第五种答案

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 中,您仍然需要在执行 ctrlzbg 之后运行 detach

您可以在 bash 命令的手册页中找到有关 内置s jobsdisown& 元字符的更多信息,尤其是标记为 “job control” 的部分。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/12702.html,未经允许,请勿转载。