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

Jad*_*ias 10 linux process

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

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

Mat*_*ons 17

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

"fg" 将它移到前台

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


cas*_*cas 8

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

例如

我的程序 &

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

我的程序> ~/program.log 2>&1 &

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


Eva*_*son 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 ~]$ 
Run Code Online (Sandbox Code Playgroud)

所以,这就是启动一个长拷贝作业并暂停它,启动第二个长拷贝作业并暂停它,然后将第一个拷贝作业放入后台并让它运行,然后第一个拷贝作业退出。然后我将最后一个复印作业放到前台并让它完成。