理解Linux中的作业控制:详解fg、bg和jobs命令
1. 前言
Linux系统中,作业控制是一个非常重要的概念,尤其是在需要同时处理多个任务时。通过使用 fg
、bg
和 jobs
等命令,我们可以轻松地在前台和后台之间切换作业,管理和控制进程的状态。这篇博客将详细介绍这些命令的用法及其相关知识点,帮助自己和读者更好地理解和应用它们。
2. jobs 命令
jobs
命令用于列出当前shell会话中的所有作业。作业可以是正在运行的、停止的或在后台运行的进程。(注意是进程)
常用选项:
-l
:显示作业的PID(进程ID)。-n
:只显示自上次通知后状态发生变化的作业。-p
:只显示作业的PID。-r
:只显示正在运行的作业。-s
:只显示停止的作业。
示例:
$ jobs
[1]+ Stopped sleep 500
3. bg 命令
bg
命令用于将停止的作业继续在后台运行。它可以指定作业号来操作特定的作业。
语法:
bg [JOB_SPEC]
JOB_SPEC 可以是以下形式:
n
:作业号为n的作业。str
:命令以str开头的作业。?str
:命令包含str的作业。-
:上一个作业。
示例:
$ bg 1
[1]+ sleep 500 &
4. fg 命令
fg
命令用于将后台作业调至前台运行。它也可以指定作业号来操作特定的作业。
语法:
fg [JOB_SPEC]
JOB_SPEC 的形式与 bg
命令相同。
示例:
$ fg 1
sleep 500
5. 简要总结
- 作业控制:Linux中作业控制允许用户在前台和后台之间切换作业。使用
Ctrl+Z
可以暂停当前前台作业并将其放入后台。- 信号:
fg
和bg
命令实际上是通过发送信号来控制作业的状态。Ctrl+Z
发送SIGTSTP
信号来暂停作业,而fg
和bg
则发送SIGCONT
信号来继续作业。- 进程状态:作业可以处于运行(Running)、停止(Stopped)或后台运行(Background)的状态。使用
jobs
命令可以查看这些状态。