在后台和前台运行 Linux 命令

如果您有一项长期运行的任务,等待它完成并不总是明智的。 我的意思是为什么要让终端占用一个特定的命令? 在 Linux 中,您可以发送命令或 过程 到后台,以便命令运行,但终端将免费供您运行其他命令。

在本教程中,我将向您展示几种在后台发送进程的方法。 我还将向您展示如何将后台进程带回前台。

直接在后台启动一个Linux进程

如果您知道命令或进程将花费很长时间,最好在后台启动命令本身。

要在后台运行 Linux 命令,您所要做的就是在命令末尾添加与号 (&),如下所示:

your_command &

我们来个简单的 bash sleep 命令并将其发送到后台。

sleep 60 &

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

[1]+  Done                    sleep 60

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

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

你在这里要做的是 使用 Ctrl+Z 暂停正在运行的进程,然后使用 ‘bg‘(background 的缩写)在后台发送进程。 暂停的进程现在将在后台运行。

running_command
^z
bg

让我们也一样 example 像之前一样。

[email protected]:~$ sleep 60
^Z
[1]+  Stopped                 sleep 60
[email protected]:~$ bg
[1]+ sleep 60 &

查看后台运行的所有进程

既然您知道如何在后台发送进程,您可能想知道哪些命令在后台运行。

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

jobs

让我们先把一些命令放在后台。

firefox &
gedit &
vim &

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

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

你注意到数字了吗 [1], [2] 和 [3] ETC? 这些是工作 ID。 您还会注意到两个命令上的 – 和 + 符号。 + 号表示您运行的最后一个作业或将其置于前台。 – 符号表示您运行或前台运行的倒数第二个作业。

在 Linux 中将进程置于前台

好的! 所以你学会了在 Linux 的后台运行命令。 但是如何将在后台运行的进程再次带到前台呢?

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

fg

现在,如果您简单地使用 fg,它会将后台作业队列中的最后一个进程带到前台。 在我们之前的 example运行 ‘fg’ 会将 Vim 编辑器带回终端。

如果你想把某个进程带到前台,你需要指定它的job id。 作业 ID 是您在“作业”命令的输出中每行开头看到的数字。

fg n

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

就是这样

这是一个快速的,但足以让您了解一些有关在 Linux 后台运行命令的知识。 我建议也学习 nohup 命令。 即使您退出会话,此命令也允许您在后台运行命令。

如果您有任何问题或建议,请在下方发表评论。