基本作业控制:停止作业,将作业添加到堆栈中,以及“fg”

基本作业控制:停止作业,将作业添加到堆栈中,以及“fg”

作业控制可能是 Linux 中我最喜欢的事情。我发现自己经常开始一个计算要求很高的过程,基本上使计算机一次无法使用长达几天,并且很庆幸总是有CTRL-Zfg,以防我需要在特定时间段内使用该特定计算机。

然而,有时我想将一个作业插入到作业堆栈中。我一直不知道该怎么做。

我在用着bash

它可能看起来像这样:

$ ./reallybigjob
^Z
[1]+  Stopped                 reallybigjob
$ (stuff I don't know) && ./otherbigjob
$ fg

答案1

没有作业堆栈,每个作业都是独立处理的。

你可以做fg; otherbigjob。这将放reallybigjob回到前台,然后当fg命令停止运行时otherbigjob。这与第一个作业后排队执行不同otherbigjob:如果按Ctrl+Zotherbigjob立即开始。如果你按Ctrl+C就会reallybigjob被杀死。您不能留otherbigjob在后台并在其之后排队另一个作业。

如果作业是 CPU 密集型作业,则该batch实用程序可以让您在 CPU 不忙时安排下一个作业。

答案2

您可以在后台运行或暂停多个作业:

$ ./reallybigjob &
[1] 873
$ ./otherbigjob &
[2] 875
$ jobs
[1]-  Running                 ./reallybigjob &
[2]+  Running                 ./otherbigjob &
$ fg 1
./reallybigjob
^Z
[1]+  Stopped                 ./reallybigjob
$ fg 2
./otherbigjob
^Z
[2]+  Stopped                 ./otherbigjob
$ jobs
[1]-  Stopped                 ./reallybigjob
[2]+  Stopped                 ./otherbigjob
$bg 1
[1]- ./reallybigjob &
$ jobs
[1]-  Running                 ./reallybigjob &
[2]+  Stopped                 ./otherbigjob
$

相关内容