如何将一个 Linux 命令转至后台运行?

吾爱主题 阅读:166 2024-04-05 15:06:19 评论:0

在使用命令行工作的时候,如果某个任务耗时比较长,长时间的占据着终端,这总是很麻烦的。其实,在 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 &

查看后台运行的所有进程

通过上文的介绍,我们知道了如何在后台运行程序,那么另一个问题,就是我们希望能够查看目前都有哪些进程正在后台运行。

要查看当前正在运行的后台进程,可以使用 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 命令,这个命令可以让我们在注销会话后(也就是关闭终端后),让命令继续在后台运行。稍后我们也会分享一篇关于 nohup 的文章,敬请关注。

以上就是本次分享全部内容,欢迎讨论。

原文地址:https://mp.weixin.qq.com/s?__biz=MzI0OTQyNjU5Mw==&mid=2247484716&idx=1&sn=20bc1eaa38632f4426cebc96e677cfee&chksm=e990e2e2dee76bf4730738cba7a876878a42ce0d6493c7bfafb23ccb850b49407c057943029a&scene=178&cur_album_id=1894932981526380552#rd

可以去百度分享获取分享代码输入这里。
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

【腾讯云】云服务器产品特惠热卖中
搜索
标签列表
    关注我们

    了解等多精彩内容