在后台和前台中运行Linux命令

时间:2020-03-05 15:31:13  来源:igfitidea点击:

如果任务很长,那么等待它完成并不总是明智的。
我的意思是为什么要保留终端以执行特定命令?
在Linux中,我们可以将命令或者进程发送到后台,以便该命令可以运行,但是终端可以自由运行其他命令。

在本教程中,将介绍几种在后台发送流程的方法。
我还将向我们展示如何使后台进程恢复到前台。

直接在后台启动Linux进程

如果我们知道该命令或者过程将花费很长时间,则最好在后台启动该命令。

要在后台运行Linux命令,我们所要做的就是在命令末尾添加&符号,如下所示:

your_command &

让我们接受一个简单的bash sleep命令,并将其发送到后台。

sleep 60 &

当命令在后台完成时,我们应该在终端上看到有关该命令的信息。

[1]+  Done                    sleep 60

将正在运行的Linux进程发送到后台

如果我们已经运行了程序,然后意识到应该在后台运行它,请不要担心。
我们也可以将正在运行的进程发送到后台。

我们要做的是使用Ctrl + Z暂停正在运行的进程,然后使用“ bg”(后台程序的缩写)在后台发送进程。
现在,已暂停的进程将在后台运行。

running_command
^z
bg

让我们以与以前相同的示例为例。

Hyman@theitroad:~$sleep 60
^Z
[1]+  Stopped                 sleep 60
Hyman@theitroad:~$bg
[1]+ sleep 60 &

查看在后台运行的所有进程

既然我们知道如何在后台发送进程,那么我们可能会对知道哪些命令在后台运行感兴趣。

为此,可以在终端中输入以下命令:

jobs

首先,将一些命令放在后台。

firefox &
gedit &
vim &

现在,jobs命令将在后台向我们显示所有正在运行的作业/进程/命令,如下所示:

jobs
[1]   Running                 firefox &
[2]-  Running                 gedit &
[3]+  Stopped                 vim

我们是否注意到数字[1],[2]和[3]等?
这些是工作ID。
我们还会注意到两个命令上的–和+号。
+号表示我们已运行或者前景显示的上一个作业。
–符号表示我们运行或者前景显示的倒数第二个作业。

在Linux中发挥作用

好的!因此,我们学会了在Linux中在后台运行命令。
但是,如何将后台运行的进程再次置于前台呢?

要将命令发送到后台,我们使用了“ bg”。
要恢复后台进程,请使用命令“ fg”。

fg

现在,如果仅使用fg,它将把后台作业队列中的最后一个进程带到前台。
在我们之前的示例中,运行“ fg”将把Vim编辑器带回到终端。

如果我们希望将某个进程置于前台,则需要指定其作业ID。
职位ID是我们在“职位”命令输出的每一行开头看到的数字。

fg n

其中n是命令作业输出中显示的作业ID。