如果我在 bash 中运行程序,我可以通过按Ctrl+来暂停它Z。如果我想让程序继续运行,我可以使用命令bg
。有没有办法直接将程序置于后台,而不必输入bg
?
澄清:我想在程序运行时将其置于后台,而不是暂停它。
答案1
我认为不可能将正在运行的程序移至后台(当进程仍处于运行状态时)。
但是有一个名为GNU屏幕,使用它您可以在一个终端内运行任意数量的基于控制台的应用程序 - 交互式命令 shell、基于 curses 的应用程序、文本编辑器等。
这里有一个不错的教程在 GNU-Screen 上。
请注意,它并没有完全按照您的要求执行,但无论如何都可以达到目的。
示例:
这是使用 GNU-Screen 实现的您所要求的操作。
- 运行
screen
您将获得有关该软件的详细信息。按回车键。 - 现在,您将看到正常的终端。但是它是一个屏幕窗口。输入任何命令
vlc
。它将在该窗口内启动该进程。 - 现在打开一个新窗口类型Ctrl+A然后C。您可以在此处运行一个新命令。请注意,您在窗口 1 中启动的进程仍在运行。
- 要脱离屏幕,请按Ctrl+A然后D。您现在返回到旧终端。但是,您从屏幕启动的任何进程仍将运行。
答案2
据我所知,你可以运行它,然后附加一个&之后是这样的:myprogram &
然而我可能在这儿错了。
[编辑]:仔细看看,如果你运行上面的命令,当您关闭终端时,应用程序也将关闭。如果您希望应用程序在后台运行,那么据我所知,应用程序需要以支持守护进程行为的方式编写。
[编辑2]: nohup command &
似乎更接近您想要实现的目标。Nohup 将允许应用程序运行,并且将忽略其输入并将其输出重定向到nohup.out
当前目录中的一个名为的文件。
答案3
这可能不是一个真正的答案。我想知道 Ubuntu 和 MSYS 之间的 Bash 有什么不同。
我正在运行 MSYS,当我运行时Application/Chrome &
,它立即进入后台进程。我可以使用 MSYS bash 作为下一个提示开始闪烁。
这些问题将正在运行的程序移至后台有着类似的意图吗?