如何将作业发送到后台而不停止它们?

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

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

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

“fg”把它移到前台

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

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

例如

 myprogram&

请注意,输出(stdout和stderr)仍然会转到当前的tty,所以通常是redirect到/ dev / null或日志文件的好主意,如下所示:

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

在任何一个例子中,这是一个后台工作,所以你仍然可以用“fg”把它带回前台(但是如果你redirect了输出,你将不会看到太多东西)。

在bash中,input“bg”会将作业置于后台直到它阻止需要input。 它将继续输出到STDERR和STDOUT这可能是无益的。 您可以input“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 ~]$ 

所以,这是开始一个长时间的复制工作,并暂停它,开始第二个长时间的复制工作,并暂停它,然后把第一个复印工作进入后台,让它运行,其次是退出第一个复印工作。 然后我把最后的复印作业放到前台,让它完成。

nohup task.sh&

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

另一个select是优秀的屏幕实用程序,它可以用来同时运行多个进程,而不必保持terminal打开。 它也允许比bg和fg更容易的交互性。