jobs是Linux shell中用于查看和管理当前终端会话后台任务的内置命令,仅显示用户启动且未退出的作业,支持-l(显示PID)、-r(仅运行中)、-s(仅已停止)等选项,并可配合fg、bg、kill精准控制任务。

Linux 中的 jobs 命令是 shell 作业控制的核心工具,专用于查看和操作当前终端会话中你亲手启动的后台或暂停任务。它不查系统全局进程,只管“自己生的、还没退出”的作业,轻量、即时、精准。
怎么看当前有哪些后台任务
直接运行 jobs 即可列出所有活跃作业,输出类似:
[1]+ Running sleep 100 &
[2]- Stopped vim notes.txt
[3] Done tar -cf backup.tar /home
其中:
• [1]+ 的 + 表示最近一次被挂起或送入后台的任务(默认操作对象)
• [2]- 的 - 是次新的任务
• [3] Done 表示已自然结束,但 shell 尚未清理该条目(再执行一次命令后通常消失)
怎么获取进程号(PID)方便进一步操作
仅靠作业编号(如 %1)有时不够用,尤其在子 shell 或脚本中,PID 更可靠:
-
jobs -l:显示作业号、PID、状态和命令(推荐日常使用) -
jobs -p:只输出 PID,适合管道传递给其他命令,例如:kill $(jobs -p)可批量终止当前所有后台作业
怎么快速筛选特定状态的任务
避免在一堆输出里人工翻找:
-
jobs -r:只显示 正在运行 的作业(比如确认某个 long-running 脚本是否卡住) -
jobs -s:只显示 已停止 的作业(常用于找回被 Ctrl+Z 暂停的编辑器或交互程序) -
jobs -n:只显示 上次提示符后状态刚变 的作业(例如刚按完 Ctrl+Z,立刻jobs -n就能高亮看到新暂停项)
怎么配合 fg、bg、kill 精准控制某个任务
jobs 本身只“看”,真正“动”要靠组合命令:
-
fg %1:把作业 1 拉回前台(若省略 %1,则默认操作%+,即带 + 号的那个) -
bg %2:让已暂停的作业 2 在后台继续运行 -
kill %3:终止作业 3(等价于kill $(jobs -p %3)) -
jobs -x kill %1:自动把 %1 替换为对应进程组 PID 后执行 kill,更安全(尤其对多进程作业)
注意:这些操作仅对当前终端有效;关闭终端前未处理的作业默认会被终止,需长期运行请改用 nohup、screen 或 tmux。


















