如何在不停止作业的情况下将作业发送到后台?


10

Ctrl + z将当前作业发送到后台,但将其停止。

以及如何恢复已停止的工作?

Answers:


17

您可以运行“ bg”在后台运行它。

“ fg”将其移至前景

请注意,bg和fg采用作业编号而不是PID,因此,如果您一次运行多个作业,请使用“ jobs”命令获取作业编号。


8

您还可以在命令行上使用“&”将程序作为后台作业启动。

例如

我的程序&

请注意,输出(stdout和stderr两者)仍将转到当前的tty,因此通常最好将其重定向到/ dev / null或日志文件,如下所示:

myprogram>〜/ program.log 2>&1&

在任何一个示例中,它都是一个与其他任务一样的后台作业,因此您仍然可以使用“ fg”将其带回到前台(但是,如果您重定向了输出,您将看不到太多内容)。


5

在bash中,输入“ bg”会将作业置于后台,直到阻止需要输入为止。它将继续输出到STDERR和STDOUT,这可能无济于事。您可以输入“ fg”使作业回到前台。

[adjuster@mx02 ~]$ cp ~/crap/* ~/crap2 
(Ctrl-Z)
[1]+  Stopped                cp ~/crap ~/crap2 

[adjuster@mx02 ~]$ cp ~/crap3/* ~/crap4
(Ctrl-Z)
[2]+  Stopped                cp ~/crap3/* ~/crap

[adjuster@mx02 ~]$ jobs
[1]+  Stopped                cp ~/crap ~/crap2 
[2]+  Stopped                cp ~/crap3/* ~/crap

[adjuster@mx02 ~]$ bg 1
[1]- cp ~/crap ~/crap2 &
[1]-  Exit 1                  cp ~/crap ~/crap2 

[adjuster@mx02 ~]$ fg 2
[adjuster@mx02 ~]$ 

因此,这是开始一个长复制作业并将其挂起,再启动另一个长复制作业并将其挂起,然后将第一个复制作业置于后台并使其运行,然后退出第一个复制作业。然后,我将最后一个复印作业放到前台,并使其完成。


bg 1fg 1没有为我工作,但bg %1fg %1做的。
Alexej Magura

4

nohup task.sh和

在后台运行,输出进入当前目录中的nohup.out。注销后继续运行。


2

另一个选择是出色的屏幕实用程序,该实用程序可用于同时运行许多进程,而无需保持终端打开。与bg和fg相比,它还允许更轻松的交互。

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.