Linux 命令:jobs、bg 和 fg
在本快速教程中,我想介绍一下jobs
命令以及我们可以操作系统上运行的作业的几种方法。简而言之,控制作业可让您暂停和恢复在 Linux shell 中启动的进程。
工作
该jobs
命令将列出系统上的所有作业;活动、已停止或其他。在探索命令和输出之前,我将在系统上创建一个作业。
我会使用这份sleep
工作,因为它不会以任何有意义的方式改变我的系统。
[tcarrigan@rhel ~]$ sleep 500
^Z
[1]+ Stopped sleep 500
首先,我发出sleep
命令,然后收到作业编号 [1]。然后我立即使用Ctl+Z停止该作业。接下来,我运行jobs
命令来查看新创建的作业:
[tcarrigan@rhel ~]$ jobs
[1]+ Stopped sleep 500
您可以看到我有一个已停止的作业,其作业号为[1]。
该命令的其他选项包括:
- -l – 除了默认信息外还列出 PID
- -n – 仅列出自上次通知以来发生变化的进程
- -p – 仅列出 PID
- -r – 仅显示正在运行的作业
- -s – 仅显示已停止的作业
背景
接下来,我将在后台恢复该sleep
作业。为此,我使用命令bg
。现在,该bg
命令的语法非常简单,如下所示:
bg [JOB_SPEC]
其中 JOB_SPEC 可以是以下任一项:
- %n - 其中n是作业编号
- %abc - 指的是以abc开头的命令启动的作业
- %?abc - 指的是由包含abc 的命令启动的作业
- %- - 指定前一个作业
注意: 如果没有提供 JOB_SPEC,bg
则对当前作业进行操作。fg
我可以使用作业编号[1]将此作业移至后台。
[tcarrigan@rhel ~]$ bg %1
[1]+ sleep 500 &
您现在可以看到我在后台有一个正在运行的作业。
[tcarrigan@rhel ~]$ jobs
[1]+ Running sleep 500 &
前景
现在,让我们看看如何将后台作业移到前台。为此,我使用命令fg
。前台命令和后台命令的命令语法相同。
fg [JOB_SPEC]
有关 JOB_SPEC 的详细信息,请参阅上面的项目符号。
sleep
我在后台启动了一个新的:
[tcarrigan@rhel ~]$ sleep 500 &
[2] 5599
现在,我将使用以下命令将其移至前台:
[tcarrigan@rhel ~]$ fg %2
sleep 500
该fg
命令现在已使我的系统恢复到睡眠状态。
结束
While I realize that the jobs presented here were trivial, these concepts can be applied to more than just the sleep
command. If you run into a situation that requires it, you now have the knowledge to move running or stopped jobs from the foreground to background and back again.
[ Free online course: Red Hat Enterprise Linux technical overview. ]