it-swarm.cn

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

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

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

10
Jader Dias

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

“ fg”将其移至前景

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

17
Matt Simmons

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

例如.

 myprogram和

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

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

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

8
cas

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

[[email protected] ~]$ cp ~/crap/* ~/crap2 
(Ctrl-Z)
[1]+  Stopped                cp ~/crap ~/crap2 

[[email protected] ~]$ cp ~/crap3/* ~/crap4
(Ctrl-Z)
[2]+  Stopped                cp ~/crap3/* ~/crap

[[email protected] ~]$ jobs
[1]+  Stopped                cp ~/crap ~/crap2 
[2]+  Stopped                cp ~/crap3/* ~/crap

[[email protected] ~]$ bg 1
[1]- cp ~/crap ~/crap2 &
[1]-  Exit 1                  cp ~/crap ~/crap2 

[[email protected] ~]$ fg 2
[[email protected] ~]$ 

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

5
Evan Anderson

Nohup task.sh和

在后台运行,输出转到当前目录中的Nohup.out。注销后继续运行。

4
Craig

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

2
Hay