sqr*_*ram 23 command-line shell jobs
有时您从终端运行程序,例如lxpanel
†。终端不会让你回到提示,它会挂起。您可以按Ctrl+C返回提示,但这会杀死lxpanel
. 但是,按Alt+ F2(弹出一个窗口以接收命令)并运行lxpanel
正常。
为什么是这样?从终端运行命令与按Alt+时出现的“运行”窗口有什么不同F2?
†这里的 lxpanel 仅用作示例。我在多个程序中都经历过这种情况
Mic*_*zek 28
默认情况下,终端将在前台运行程序,因此在程序完成之前您不会回到 shell。这对于从 stdin 读取和/或写入 stdout 的程序很有用——您通常不希望它们中的许多同时运行。如果你想让一个程序在后台运行,你可以这样启动它:
$ lxpanel &
Run Code Online (Sandbox Code Playgroud)
或者如果它已经在运行,你可以用Ctrl+暂停它,Z然后运行bg
将它移到后台。无论哪种方式,你都会得到一个新的 shell 提示,但程序仍在运行,它的输出将出现在终端中(所以它可能会在你打字的过程中突然出现)
一些程序(通常是守护进程)会在启动时分叉一个单独的进程,然后让主进程立即退出。这可以让程序继续运行而不会阻塞你的 shell
当您在终端中启动程序时,终端将“挂起”直到您的程序停止。通过按Ctrl+c您正在关闭您的程序,从而返回到提示。您将在所有 GUI 应用程序中看到这一点,例如,尝试使用 Firefox。
当您使用其他方法(例如 Alt+F2 或单击菜单)时,您的程序会在后台启动,因此不会发生任何奇怪的事情(并且无论如何都没有命令提示符)。
如果您仍想从终端启动 GUI 应用程序,请&
在命令末尾追加,如下所示
lxpanel &
Run Code Online (Sandbox Code Playgroud)
这告诉终端lxpanel
在后台运行并立即给你另一个提示。
归档时间: |
|
查看次数: |
37018 次 |
最近记录: |