bg命令用于将当前shell会话中被Ctrl+Z挂起(Stopped)的作业切换至后台运行状态,不作用于已运行、已终止或非本会话的进程;执行前需用jobs确认状态,语法支持bg、bg %n或bg %?cmd等。

Linux 中的 bg 命令不是用来“唤醒”后台任务的,而是把已挂起(Stopped)的任务切换为后台运行状态。它不适用于正在运行的后台任务,也不作用于已终止或已退出的进程——只对当前 shell 会话中被 Ctrl+Z 暂停的作业有效。
确认任务确实处于挂起状态
执行 jobs 查看当前所有作业状态。挂起的任务会显示 Stopped:
-
[1]+ Stopped sleep 300→ 可用bg %1恢复为后台运行 -
[2]- Running ping -c 10 google.com &→ 已在后台运行,bg对它无效 -
[3]+ Done ls -R /→ 已完成,bg无法重新启动
使用 bg 恢复挂起任务到后台
语法简单,但要注意标识符写法:
-
bg(不带参数)→ 恢复最近挂起的作业(标记为+的那个) -
bg %1→ 恢复作业号为 1 的挂起任务 -
bg %2→ 恢复作业号为 2 的任务,即使它不是最新挂起的 -
bg %?rsync→ 模糊匹配命令名含rsync的挂起作业(支持通配)
常见操作流程(三步闭环)
这是最典型的使用路径:
- 前台运行耗时命令:比如
tar -cf archive.tar /bigdir - 按下
Ctrl+Z暂停它,终端返回提示如[1]+ Stopped tar -cf ... - 输入
bg或bg %1,任务立即在后台继续执行,终端可自由输入其他命令
注意事项和限制
bg 能生效,依赖几个前提条件:
- 必须在支持作业控制(job control)的交互式 shell 中运行(如 bash、zsh,默认开启)
- 目标作业必须属于当前 shell 会话(不能是子 shell 或已脱离的进程)
- 挂起任务若依赖终端输入/输出(如
vim、top),移到后台后可能卡住或报错,不建议强行bg -
bg不改变进程的 stdout/stderr 重定向行为;如果原命令没重定向,输出仍会打到终端(可能干扰当前操作)


















