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