fg 命令可将当前 Shell 会话的后台作业调回前台:默认 fg 恢复带 + 号的最近作业,fg %1 或 fg 1 恢复指定编号作业,Stopped 状态任务恢复执行,Running 状态则独占终端。

直接用 fg 命令就能把后台任务调回前台,前提是这个任务属于当前 Shell 会话,且作业控制已启用(默认开启)。
先确认后台有哪些任务
运行 jobs 查看当前 Shell 管理的后台作业列表。输出类似:
[2]- Running tail -f /var/log/syslog &
[3] Running sleep 300 &
每行开头的数字就是作业编号(job number),括号里的 + 表示默认作业(最近一个被挂起或后台启动的),- 表示前一个。
基本调用方式
- 只输入 fg:自动把带 + 号的那个作业调到前台(最常用)
- 指定作业:fg %1 或 fg 1(% 可省略),把编号为 1 的作业调回前台
- 快速引用:fg %+ 等价于 fg;fg %- 调出带 - 号的作业
注意挂起与后台运行的区别
被 Ctrl+Z 暂停的任务状态是 Stopped,用 fg 可立即恢复前台运行;而用 & 启动的后台任务状态是 Running,fg 也会把它拉到前台——但此时它会独占终端,不能再后台执行了。
常见问题提醒
- fg %1 中的 1 是作业号,不是进程 PID;查 PID 要用 ps,但 fg 不认 PID
- 如果执行 fg 报错 “no job control” 或 “no current job”,说明当前 Shell 未启用作业控制,或该任务不属于本终端(比如子 Shell 启动的)
- 调回前台后,按 Ctrl+C 可终止,Ctrl+Z 又会把它挂起回后台


















