如何使用FG和BG命令管理Linux后台作业

时间:2020-03-05 15:26:43  来源:igfitidea点击:

在Linux和UNIX系统中,作业被定义为已开始运行且尚未完成的任务。
每个任务基本上是执行的程序,这是一个过程。

每个作业都分配有一个名为作业编号的唯一ID(作业ID)。
我们可以在背景中运行作业,而无需用户任何干预,也可以在前台运行为当前作业。

在本教程中,我们了解FG和BG命令来管理Linux中的作业。

BG命令

通过BG命令的背景中可以继续通过一些中断信号停止的进程。

$nautilus
^Z
[1]+ Stopped nautilus

此过程已停止使用"Ctrl + Z"中断信号。
可以使用作业命令检查停止的进程。
但在检查之前,让我们创建另一个作业并使用停止信号中断它。

$jedit
9:22:28 AM [main] [warning] jEdit: inifPLAF failed to set required l&f
9:22:29 AM [main] [warning] jEdit: inifPLAF failed to set required l&f
^Z
[2]+ Stopped jedit
$jobs
[1]- Stopped nautilus
[2]+ Stopped jedit

我们可以看到作业的状态已停止。
加号(+)表示当前作业。
减号( - )是指以前的工作。
现在,在后台运行停止的作业,我们使用BG命令。
默认情况下,如果没有给出参数,则BG在后台运行当前作业。

$bg
[2]+ jedit &
$jobs
[1]+ Stopped nautilus
[2]- Running jedit &

BG命令可以将作业编号作为参数。
作业编号在作业输出中的方括号中指示。

在上面的例子中,Nautilus的作业编号是1.现在我们使用此作业编号来运行后台工作。
指示作业编号需要符号。

$bg %1
[1]+ nautilus &
$jobs
[1]- Running nautilus &
[2]+ Running jedit &

BG命令也可以通过其名称引用作业。
例如,"%字符串"是指名称以指定的字符串和"%?
字符串"(字符串)引用的作业是指名称包含指定字符串的作业。

为了插图,我们有两个停止的工作。

$jobs
[1]+ Stopped nautilus
[2]- Stopped jedit
$bg %nau
[1]+ nautilus &
$jobs
[1]- Running nautilus &
[2]+ Stopped jedit
$bg %?ed
[2]+ jedit &
$jobs
[1]- Running nautilus &
[2]+ Running jedit &

FG命令

FG命令就像BG命令,除了它而不是在后台发送命令,它将它们运行在前景中并占用当前终端并等待进程退出。

# jobs
[1]- Stopped makewhatis
[2]+ Stopped vi

没有任何参数,FG将在前台运行当前作业(在这种情况下VI)。

# fg
vi

当命令在前台运行时,我们不会返回终端,直到命令退出。
因此,Jobs命令现在只显示VI现在将退出一份工作。

# jobs
[1]+ Stopped makewhatis
# fg %1
makewhatis
# jobs

没有剩下的工作。
与bg,%string和`%?
串也适用于FG。

# jobs
[1]- Stopped makewhatis
[2]+ Stopped vi
# fg %v
vi
# fg %?what
makewhatis