如果您有一项长期运行的任务,等待它完成并不总是明智的。 我的意思是为什么要让终端占用一个特定的命令? 在 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 命令。 即使您退出会话,此命令也允许您在后台运行命令。
如果您有任何问题或建议,请在下方发表评论。