bg 命令详解
更新时间:2026-08-28。本文是「一个命令一个文档」系列,聚焦
bg——作业控制(Shell 内建),归类在进程管理命令族(见进程管理与调度命令族)。前台任务按了 Ctrl-Z 被挂起,想让它继续跑但不占用终端?bg 把它丢回后台。
bg 把一个处于停止(Stopped)状态的作业切换到后台继续运行。它是 fg(拉前台)的反向操作。
一、基本用法
bash
sleep 1000
^Z # 按 Ctrl-Z 挂起,shell 提示 [1]+ Stopped
bg # 默认恢复"当前"作业(带 + 号那个)到后台
bg %2 # 恢复作业号 2 到后台
jobs # 确认状态变成 Running典型流程:前台任务占着终端 → Ctrl-Z 挂起 →
bg让它在后台继续跑 → 终端腾出来干别的。不加参数时作用于带+号的"默认作业"。
二、与 fg / jobs / & 的关系
| 操作 | 效果 |
|---|---|
命令 & | 一开始就在后台跑 |
Ctrl-Z | 前台任务挂起(Stopped) |
bg %n | 挂起的任务在后台继续 |
fg %n | 拉回前台(见fg 命令详解) |
| jobs | 查看作业表(见jobs 命令详解) |
这四样是交互式 shell 作业控制的完整闭环。bg 负责"挂起 → 后台继续"这一步。
三、踩坑:断开终端后 bg 任务会被杀
bash
# 在 SSH 会话里 bg 的任务,断开连接后默认收到 SIGHUP 而终止
# 解决:启动前用 nohup,或 bg 之后 disown,或放进 tmux/screen
nohup long_job & # 更稳妥的长期后台写法bg 的任务仍然隶属于当前 shell 会话,shell 退出(断 SSH)会向作业发 SIGHUP,任务随之死亡。要真正"脱离终端"长期跑,得用 nohup、
disown或 tmux。bg 只是"会话内"的后台,不是"守护进程"。
四、实战:临时让出终端
bash
vim config.ini # 编辑到一半需要跑个命令
^Z # 挂起 vim
bg # 其实这里用 fg 回来更常见,但如果是长任务就 bg
# 跑完别的,fg %1 回到 vim 继续编辑一句话总结
bg = 让挂起的任务在后台继续:作用于 Stopped 状态的作业(默认当前作业或 %n 指定),是 fg 的反向;配 jobs 查看。注意它仍绑定当前 shell,断线会被 SIGHUP 杀掉——长期后台请用 nohup 或 tmux。