如何在不阻止的情况下从终端运行命令?


43

我从终端在Ubuntu中运行了许多程序,但是我希望在打开程序后能够继续使用终端。如何将程序放在后台,这样就不必打开另一个窗口?

Answers:


60

有多种方法可以运行终端程序并继续使用终端:

  • 您可以打开另一个终端选项卡(单击鼠标右键,然后选择“打开新选项卡”)。
  • 您可以追加&到您运行的命令。请注意,您不会看到文本输出到终端,例如错误消息。
  • 您可以键入Ctrl- Z然后运行bg。与运行具有相同的效果command &
  • 您可以运行nohup command &,然后按Enter。(感谢ccpizza,请参阅下面的评论。)

但是,按Alt- F2然后从GUI运行命令通常被认为是最佳实践-根本没有终端!

请注意,使用&(不nohup)时,关闭终端仍将终止应用程序,除非您disown随后运行

编辑:看起来使用nohup有时会在您的主文件夹中留下一些小东西。正常情况下,已记录到终端的内容显然会保存到〜/中的文件中。

~~

在后台运行程序的一种简单方法是program-name & disown,它将带您到可以关闭而不会终止该进程的终端。


4
为了防止在关闭终端后终止子进程,您可以使用来启动您的应用程序nohup firefox&
ccpizza

凉!我不知道(但是经过试验,终端仍然“被阻止”)!
WindowsEscapist 2012年

它不是“被阻止”的,它只是“看起来”被阻止的,如果您输入一次回车,则会出现提示。
ccpizza

啊,我以前没注意到。
WindowsEscapist

program-name & disown是一个很好的解决方案
亨利医生

8

您可以在&之后运行命令。

例如:

雷鸟&

有关更多信息,请参见此处


这仅在关闭终端窗口之前有效,一旦关闭窗口,程序将终止
kurdtpage '18

6

setsid除了可以用来在新会话中运行程序外,&>/dev/null还不会收到任何日志消息。

所以就像

setsid program-name &>/dev/null


凉。当用户注销和当前会话关闭时,它必须保持进程运行。
Mikhail Moskalev


0

您可以在虚拟终端中运行它tmux(或,screen但我听说它不再维护了)

# This ataches your terminal to a virtual terminal
tmux
run_your_command
# This detaches your virtual terminal (previous command can be running)
CTRL-b d
run_other_commands # on your terminal
# re-attach the virtual terminal to see the status of run_your_command
tmux a

tmux 可以做更多的事情,例如:

  • 将您的虚拟终端移动到另一个终端
  • 在多个终端中共享虚拟终端(其他用户可以看到您的工作;-))
  • 拆分“屏幕”以具有多个终端。
  • ...

https://www.hamvocke.com/blog/a-quick-and-easy-guide-to-tmux/

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.