推荐答案
在 Shell 脚本中,jobs
命令用于列出当前 Shell 会话中正在运行或已停止的后台作业。它可以显示作业的状态、作业编号以及作业的命令行。
本题详细解读
1. jobs
命令的基本用法
jobs
命令的基本语法如下:
jobs [选项] [作业编号]
常用的选项包括:
-l
:显示作业的进程 ID(PID)。-p
:仅显示作业的进程 ID。-n
:仅显示自上次通知后状态发生变化的作业。-r
:仅显示正在运行的作业。-s
:仅显示已停止的作业。
2. jobs
命令的输出
jobs
命令的输出通常包括以下信息:
- 作业编号:每个作业都有一个唯一的编号,通常以
[1]
、[2]
等形式表示。 - 状态:作业的当前状态,如
Running
(运行中)、Stopped
(已停止)等。 - 命令行:启动该作业的命令。
例如:
[1] + Running sleep 100 & [2] - Stopped vim file.txt
3. 使用 jobs
命令的场景
- 查看后台作业:当你使用
&
将命令放入后台运行时,可以使用jobs
命令查看这些后台作业的状态。 - 管理作业:结合
fg
和bg
命令,可以将后台作业切换到前台运行,或将已停止的作业重新放到后台运行。 - 调试脚本:在编写复杂的 Shell 脚本时,
jobs
命令可以帮助你监控和管理脚本中启动的后台进程。
4. 示例
假设你在 Shell 中运行了以下命令:
sleep 100 & vim file.txt
然后按下 Ctrl+Z
停止 vim
进程。此时,你可以使用 jobs
命令查看当前的后台作业:
jobs
输出可能如下:
[1] + Running sleep 100 & [2] - Stopped vim file.txt
你可以使用 fg %1
将 sleep 100
切换到前台运行,或者使用 bg %2
将 vim file.txt
放到后台继续运行。