在bash中将正在运行的程序移至后台


10

如果我正在bash中运行程序,可以按Ctrl+ 挂起它Z。如果我想让程序继续运行,则可以使用该bg命令。有什么方法可以直接将程序置于后台,而无需键入bg

澄清:我想在程序已经运行时将其放在后台,而不挂起它。


2
这不是重复项。关闭终端窗口时,我不想让程序继续运行,也无法键入其他命令。我想将一个已经运行的进程放在后台。
KalleElmér2012年

1
是的,这不是重复项,请重新打开。
saji89,2012年

感谢所有帮助重新打开此文件的人。@Kalle,现在重新打开了问题。
saji89 '10 -10-4

非常感谢!至于实际找到问题的答案,我想唯一的方法是先将其挂起,然后再将其作为背景。
KalleElmér2012年

Answers:


4

我认为不可能将正在运行的程序移至后台(当进程仍处于运行状态时)。
但是,有一个名为GNU-Screen的应用程序,您可以使用它在一个终端中运行任意数量的基于控制台的应用程序-交互式命令外壳,基于curses的应用程序,文本编辑器等。
这是有关GNU屏幕的不错的教程
请注意,它并不能完全满足您的要求,但可以达到目的。
示例:
这是您使用GNU-Screen所要求的实现。

  1. 运行screen
    您将获得有关软件的详细信息。按回车键。
  2. 现在,您将看到正常的终端。但是,它是一个屏幕窗口。键入任何说出的命令vlc。它将在该窗口中启动该过程。
  3. 现在打开一个新窗口,键入Ctrl+ A,然后C。您可以在此处运行新命令。请注意,您在窗口1中启动的进程仍在运行。
  4. 要从屏幕分离,请按Ctrl+ A,然后D。您现在返回到旧终端。但是,从屏幕开始的任何进程仍将继续运行。

4

据我所知,您可以运行它,然后在其后添加,如下所示:myprogram &

但是,我在这里可能是非常错误的。

[编辑]:仔细研究一下,如果运行上述操作,则在关闭终端时应用程序将关闭。如果您希望应用程序在后台运行,那么据我所知,需要以支持守护程序行为的方式编写应用程序。

[EDIT 2]: nohup command &似乎更接近您想要实现的目标。Nohup将允许应用程序运行,并且将忽略其输入并将其输出重定向到nohup.out当前目录中的一个文件中。


当我关闭终端窗口时,我并不在乎它是否关闭。我要寻找的只是bash中的键盘快捷键,其功能类似于Ctrl + Z,但可以使进程在后台运行,而不是挂起它。
KalleElmér2012年

0

这可能不是一个真正的答案。我想知道Ubuntu与MSYS之间的Bash有何不同。

我正在运行MSYS,当我运行时Application/Chrome &,它将立即进入后台进程。我可以使用MSYS bash作为下一个提示开始闪烁。

这是否是出于类似目的将正在运行的程序移至后台的问题?

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.