jobs -l 是查看后台任务 PID 最直接的方式,它显示作业编号、PID、状态和命令,用于 kill、fg、bg 等操作;输出中[1]- 12345 Running sleep 100 & 表示作业号、PID、状态及命令,%1 和 PID 12345 不可混用。

jobs -l 是查看后台任务 PID 最直接的方式,它能同时显示作业编号、PID、状态和命令,为后续精细操作(如 kill、fg、bg)提供准确依据。
jobs -l 输出格式说明
执行 jobs -l 后,典型输出如下:
[1]- 12345 Running sleep 100 & [2]+ 12367 Stopped vim file.txt
-
[1]和[2]是 shell 分配的作业号(jobspec),仅在当前 shell 会话中有效; -
12345、12367是对应进程的 PID,操作系统全局唯一; -
-表示前一个作业,+表示当前默认作业(即fg或bg不加参数时操作的对象); -
Running/Stopped反映当前状态,决定你能执行什么操作。
获取 PID 后的常见细粒度操作
- 终止指定后台任务:
- 用作业号(推荐,安全):
kill %1 - 用 PID(更底层,适用于跨 shell 场景):
kill 12345
- 用作业号(推荐,安全):
- 恢复暂停任务到前台:
fg %2(或简写为%2) - 让暂停任务在后台继续运行:
bg %2 - 查看该 PID 的完整进程信息:
ps -o pid,ppid,cmd,%cpu,%mem -p 12345
注意事项
-
jobs -l只显示当前终端 session 中启动且未退出的后台/挂起任务,已kill或自然结束的任务不会出现; - 如果任务被
nohup或disown过,它就脱离了当前 shell 的作业控制,jobs将无法列出,此时需用ps配合grep查找; - 作业号
%1和 PID12345不可混用:kill %1由 shell 解析后转发给内核,而kill 12345直接作用于进程,后者更通用但需确保 PID 未被复用。
不复杂但容易忽略。











