fg 命令详解
更新时间:2026-08-28。本文是「一个命令一个文档」系列,聚焦
fg——作业控制(Shell 内建),归类在进程管理命令族(见进程管理与调度命令族)。后台任务想重新接手交互(比如回到 vim 继续编辑),fg 把它拉回前台。
fg 把一个后台或挂起的作业切换回前台运行,让你能直接跟它交互(输入、看输出)。
一、基本用法
bash
sleep 1000 &
jobs # 看到 [1] Running
fg # 把默认作业拉回前台(终端被它占住)
fg %2 # 拉回作业号 2不加参数时作用于带
+号的默认作业。拉回前台后,这个任务重新占据你的终端,直到它结束或你再按 Ctrl-Z 挂起。
二、配合 Ctrl-Z 的"暂离"套路
bash
vim report.md # 编辑中想要跑别的命令
^Z # 挂起 vim(Stopped)
# 跑其他命令……
fg # 回来继续编辑,光标位置都在这是交互式 shell 最经典的"暂离再回来":Ctrl-Z 把当前任务挂起腾出终端,忙完
fg原样回来。比保存退出再重开高效得多。
三、fg vs bg
| 命令 | 效果 |
|---|---|
fg %n | 拉回前台,独占终端、可交互 |
bg %n | 在后台继续,不占终端(见bg 命令详解) |
需要交互(vim、top、交互式 Python)用 fg;不需要交互、只想它在背后跑完用 bg。两者操作的是同一批作业(见jobs 命令详解)。
四、踩坑:脚本里 fg 几乎没用
bash
# fg 是交互式作业控制命令,依赖终端;
# 在非交互脚本里它没有意义,脚本要等任务结束用 wait 或干脆顺序执行fg/bg/jobs 都是为人机交互设计的 shell 特性,脚本(尤其无终端的 cron 环境)里用不了也没必要。脚本里要"等后台任务"用 wait,要"持续前台跑"直接顺序写命令即可。
五、实战:多任务间来回切换
bash
vim a.txt & # 后台起
vim b.txt # 前台编辑 b
^Z; fg %1 # 挂起 b,回到 a一句话总结
fg = 把作业拉回前台交互:默认作用于当前作业或 %n 指定;是 bg 的反向,配 jobs 使用。它是交互式特性,脚本里基本用不到——那种场景用 wait 等任务结束。