当我从终端打开 gedit 时,我无法使用终端进行任何其他操作,除非我关闭 gedit。为什么?

当我从终端打开 gedit 时,我无法使用终端进行任何其他操作,除非我关闭 gedit。为什么?

我对 Linux 世界非常陌生。我在联想笔记本电脑上运行 Ubuntu 15.04。我的终端仿真器是 Gnome Terminal。

我知道一些事情。假设我输入cd Documents/terminalpractice/python_folder。然后我输入,例如touch askubuntu.py。然后我使用命令gedit askubuntu.py

此时,文本编辑器 gedit 将在我的屏幕上打开,我可以随意尝试编写代码。但是,在终端窗口中,我猜 gedit“进程”正在运行?所以我无法使用终端,直到我关闭 gedit(我保存并单击顶角的“X”)。

为什么会发生这种情况?我可以使用图形界面打开文件夹,双击我的 askubuntu.py,它将在 gedit 中打开,而不会影响终端中正在发生的事情。我想知道为什么会发生这种情况。

答案1

为什么会发生这种情况?

当你刚刚运行时:

 gedit filename

它在前台运行该进程。要将其发送到后台并继续使用终端,请使用:

gedit filename &

请注意,这个(当然还有上面的)将gedit作为终端的子进程运行,所以当你退出终端时它也会退出gedit

因此,为了“优雅地”运行它,请使用:

nohup gedit >/dev/null &

nohup将以与终端分离的方式运行 gedit,因此它不会挂断。>/dev/null将标准输出重定向到特殊位置dev/null,从而阻止创建nohup.out文件。

查看man nohup询问更多信息。

答案2

这是正常的。如果您运行一个命令,终端在完成该命令之前不会获取另一个命令。按您想要的方式执行命令是按 ALT + F2 并输入您需要的命令。

如果您在终端中执行此操作,它将不会接受另一个命令,直到当前命令的指令结束。

答案3

这就像运行文本模式的程序或应用程序:它开始运行,并且终端(不是终端,而是命令解释器)在应用程序运行完成之前不可用。例如,运行“nano”,您将看到相同的行为(命令解释器在应用程序运行时“退出”)。

仅仅因为应用程序(gedit)打开了一个额外的图形窗口并不会改变底层的基本行为。

当你在终端上启动命令时,你可以使用 & 要求命令解释器在后台运行该命令:

gedit blahblah &

如果命令已在运行(终端“锁定”),您可以按 ctrl-z(暂停当前运行的进程 - 请注意 gedit 窗口将变得无响应),然后输入bg(将暂停的进程发送到后台)。

答案4

这是因为您是gedit从终端在前台启动的。以这种方式运行的任何命令都会占用命令提示符,直到命令完成为止。因此,当您退出由 打开的窗口时,您的终端提示符将再次起作用。您可以在命令末尾gedit放置 ,以在后台运行命令。&

您可以使用该jobs命令查看已启动的所有后台命令。

如果您已经正常运行该命令,您也可以按Ctrl+Z来暂停该命令,然后通过键入 将其发送到后台bg

相关内容