gedit命令运行时我无法使用终端
我最近安装了12.04。
当我尝试使用gedit编辑文件时,在关闭编辑文件或必须打开新终端之前,我无法使用终端。 但我认为11.04我没有这个问题,但是我不确定。
无论如何要避免这种情况并在编辑文件时使用相同的终端。
简答
在没有反应的终端:
- 按Ctrl + Z.
- 输入
bg
并输入。 - 键入
disown
并输入。
答案很长
在无响应的终端中, 按Ctrl + Z ,这将“暂停”进程(或“作业”)并将控制台控件返回给您。 但是,您会注意到gedit
没有响应,您无法使用它。
额外 :如果你愿意,你可以执行命令
jobs
,你会发现它会读取停止gedit
命令,这就是你不能使用它的原因。
要使作业在后台成功运行(即再次使gedit
响应),请执行命令bg
(表示背景)。 您现在可以使用gedit
,同时提示自己。
额外 :现在,如果你执行
jobs
,你会发现它会读取正在运行 。
你可以从一开始就克服所有这些。 当您从终端启动gedit
时,在命令的末尾添加一个&
,这样就像gedit /path/to/file &
。 这将从头开始在后台启动gedit
(您可能需要多次按Enter键才能恢复控制台控制)。
额外 :如果您正在关注这些额外的注释,您可能已经注意到第二次执行
jobs
,您可以看到bash在gedit
命令的末尾添加了&
。
一旦你习惯了这个系统,你可能会注意到,如果你关闭终端,gedit也会终止,甚至没有确认对话框。 要防止这种情况发生,请运行disown
,这将从终端分离gedit进程,将其从jobs
返回的列表中删除。
只需输入:
gedit
这将立即返回命令提示符给您。
您可以使用nohup
来阻止GUI连接到终端:
nohup mupdf some.pdf &
这将允许您关闭正在启动的终端,而无需关闭程序。
您还应该注意到,nohup命令将使用您运行的命令的stdout
和stderr
创建一个文件。 如果要防止这种情况,请在&>/dev/null
之前添加&>/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
。
这篇博文很好地解释了这两种方法。
不公开的手册页
来自man gedit
:
-b, --background Run gedit in the background.
所以,如果你用-b
选项运行gedit
,它将在后台启动:
gedit -b [FILE-NAME]
此外,接下来您可以为gedit -b
创建别名(请参阅此处如何创建永久别名):
alias gedit='gedit -b'
从现在开始,将来你可以正常使用gedit [FILE-NAME]
,它将在后台启动。
只需输入:
gedit FILENAME & disown
使用&
在bash中结束命令会在后台运行该命令。 但是,该过程仍然附在终端上。
没有被 disown
,如果你关闭终端,gedit将关闭,甚至没有提示您保存已编辑的文件。 事实certificate我错了,这不是bash的情况,但zsh就是这种情况。 你仍然需要在执行ctrl – z和disown
从当前终端分离后台进程,这样如果你关闭终端,gedit将继续正常运行。bg
之后运行detach
,即使在bash中也是如此。
您可以在bash
命令的联机帮助页中找到有关内置jobs
, disown
和&
metacharacter的更多信息 ,尤其是标有“工作控制”的部分。
这可能是因为您通过终端打开了gedit。 执行此操作时,您会看到通过GUI启动时通常隐藏的命令行输出。 解决此问题的最佳方法是打开一个新的终端窗口。 另一个将在gedit关闭后可用。 您也可以使用上面用户建议的开关。