在使用命令行工作的时候,如果某个任务耗时比较长,长时间的占据着终端,这总是很麻烦的。其实,在 Linux 中,可以将命令或进程发送到后台,让其在后台运行,而释放出终端来,这样可以继续运行其他的命令。
本文将介绍几种向后台发送进程的方法,然后还会展示如何将后台进程恢复到前台。
直接在后台启动 Linux 进程
如果我们知道某个命令或进程会花费很长时间,那么最好直接在后台启动该命令。
要在后台运行 Linux 命令,只需要在命令的末尾添加一个 & 符号,如下所示:
比如,我们启动一个简单的 sleep 命令,将其发送到后台:
当命令在后台完成时,你应该能在终端上看到该命令的信息:
将正在运行的进程发送到后台
如果你已经运行了一个程序,然后忽然意识到,这个程序本应该在后台运行。那么这种情况下,也有办法将正在运行的进程发送到后台。
此时需要做的,首先按 Ctrl + Z 键,暂停正在运行的进程,然后使用 bg(background 的缩写)向后台发送进程,该被挂起的进程就会转到后台继续运行。
还是以刚才那个 sleep 命令为例,首先在前台运行 sleep 命令,然后将其转到后台:
查看后台运行的所有进程
通过上文的介绍,我们知道了如何在后台运行程序,那么另一个问题,就是我们希望能够查看目前都有哪些进程正在后台运行。
要查看当前正在运行的后台进程,可以使用 jobs 命令,如下:
为了演示这个例子,我们首先在后台运行一些命令:
现在,运行 jobs 命令,就会显示所有正在运行的进程或命令:
在上述输出中,注意到其中的数字([1], [2], [3])了吗?这是作业ID。另外,其中的两条输出,数字后面的 + 和 - 符号是什么意思呢?+ 表示我们运行的最后一个作业,- 表示我们运行的倒数第二个作业。
将后台运行的进程转至前台
接下来一个问题,如何将在后台运行的进程,转到前台呢?
将正在运行的命令发送到后台,使用 bg;那么反过来,要恢复后台进程,可使用 fg(foreground的简写) 命令:
单单使用 fg 命令而不带任何参数,会把后台作业列表中的最后一个进程带到前台。在前面的例子中,运行 fg 会将 vim 编辑器返回到终端中。
如果我们要将某个指定的进程带到前台,还需要指定作业的 id。这个 id 就是我们前面提到的,使用 jobs 命令的输出中,每一行最前面的数字。
上文所述就是一些关于将 Linux 命令在后台运行的相关知识。除此以外,建议再学习一下 nohup 命令,这个命令可以让我们在注销会话后(也就是关闭终端后),让命令继续在后台运行。稍后我们也会分享一篇关于 nohup 的文章,敬请关注。
以上就是本次分享全部内容,欢迎讨论。