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


44

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

Answers:


80

简短答案

在无响应的终端中:

  1. Ctrl+ Z
  2. 输入bg和输入。
  3. 输入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


2
总是让我感到惊讶的是,没有办法立即使正在前台运行的进程立即后台运行。您必须先暂停它,有时这是不可行的。
2013年

@再次仔细阅读“您可以克服...”部分!
guntbert

@guntbert-如果进程已经在运行就没有帮助...
不错,

44

只需输入:

gedit <filename-to-edit> &

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


5
这是一个重要的Unix习惯用法,值得一读。任何命令都可以通过这种方式在后台运行。这种交互方式显然会使交互工具困惑,但是例如bubbleort war_and_peace.txt%将允许您的分拣员在进行工作时(很长很长的时间)摇动杰作(例如,执行快速分拣)或其他内容)
乔恩·基帕斯基

1
@JonKiparsky有趣的例子-确实有道理。
2013年

25

您可以使用nohup来防止将GUI附加到终端:

nohup mupdf some.pdf &

这将允许您关闭正在从中启动的终端,而无需关闭程序。

您还应该注意,nohup命令将使用您运行的命令的stdout和创建一个文件stderr。如果要防止这种情况,请在&>/dev/null之前添加&

nohup mupdf some.pdf &>/dev/null &

4
“ nohup”代表“不挂断”。这可以追溯到早期的Unix,当时经常通过电话线连接(物理)终端,因此您可以通过挂断电话来关闭终端。
MSalters

3
附加信息:nohup命令将创建一个nohup.out包含该命令输出的文件。如果要查看错误消息,这很有用。如果您不希望创建文件,请按如下所示添加重定向:nohup mupdf some.pdf &>/dev/null &
Paddy Landau

19

您也可以使用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
Flimm,2015年

13

来自man gedit

-b, --background
         Run gedit in the background.

因此,如果gedit使用-boption 运行,它将在后台启动:

gedit -b [FILE-NAME]

此外,接下来您可以为其创建别名gedit -b(请参见此处如何创建永久别名):

alias gedit='gedit -b'

从现在开始,将来您可以gedit [FILE-NAME]照常使用,它将在后台启动。


2
使用别名重新定义常用命令是一个坏主意。您可以在stackexchange上找到很多关于它的线程。可以使用其他名称的别名。简而言之,如果其他人曾经使用现有命令,则对现有命令进行别名会在您的计算机上造成意外的行为(例如,尝试帮助您解决其他问题时),并且在您使用没有这些别名和命令的另一个系统时,对您也会执行相同的操作不能按预期工作。张贴者之一是别名rm ='rm -i'。它使您习惯于删除不时出现的第二次机会。
2013年

10

只需输入:

gedit FILENAME & disown

&bash 结尾的命令在后台运行该命令。但是,该过程仍附加在终端上。

不使用disown,如果关闭终端,则gedit将关闭,甚至不会提示您保存编辑的文件。disown将后台进程与当前终端分离,因此,如果您关闭终端,则gedit将继续正常运行。原来我错了,bash并不是这种情况,而zsh就是这种情况。您仍然需要detachctrl- z和之后执行bg,即使是在bash中。

你可以找到更多关于内置插件jobsdisown&在元字符手册页的bash命令联机帮助页图标,尤其是标有“作业控制”一节。


disown我能够在终端关闭后保持gedit打开。我听不懂您所说的“ bash不是这种情况,zsh是这种情况”
KrIsHnA 2015年

0

这可能是因为您通过终端打开了gedit。当您执行此操作时,您会看到命令行输出,如果通过GUI启动,该命令行输出通常是隐藏的。解决此问题的最佳方法是打开一个新的终端窗口。gedit关闭后,另一个将可用。您也可以使用上述用户建议的开关。


即使最小化了,新的终端窗口也只会使桌面混乱。使用&带有或不带有unown更为简单和清洁。
2013年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.