fg命令仅能调回当前shell会话中未退出且未disown的作业;先用jobs查看编号及状态,再用fg或fg %n恢复指定作业,Ctrl+Z挂起后可直接fg无缝返回编辑器。
在 macos 终端中,一个被挂起(stopped)或放入后台(backgrounded)的作业,可以通过 fg 命令直接调回前台继续执行。这不是“唤醒任意后台进程”,而是针对当前 shell 会话中由你亲手启动、且尚未退出的作业(job)。
确认当前有哪些后台/挂起的作业
先运行:
- jobs —— 列出当前 shell 中所有作业(编号如 [1]、[2]),状态显示为 Running、Stopped 或 Done
- ps -j 或 ps aux | grep [关键词] —— 查看更广范围的进程,但注意:它不区分是否属于当前 shell 作业
用 fg 把指定作业调回前台
假设 jobs 显示:
[1]- Stopped vim notes.txt[2]+ Running python3 long_script.py &
那么:
- fg(不带参数)→ 调回带 + 号的最近作业(上例即 python3)
- fg %1 → 调回编号为 1 的作业(上例即 vim)
- fg %2 → 调回编号为 2 的作业
常见配合操作
很多用户实际想“把后台运行的脚本拿回来控制”,但要注意前提:
- 该任务必须是当前终端启动的,且未被 disown 过;否则 fg 找不到它
- 如果任务已用 & 启动并持续运行(如
sleep 300 &),它默认就是“Running”状态,fg 可立即接管 - 如果任务被 Ctrl+Z 挂起(显示 Stopped),需先用 bg %1 放入后台继续运行,再用 fg %1 拉回
- 若已关闭终端或任务脱离了 shell 生命周期(如用 launchd / nohup 启动),fg 无效——它只管“当前 shell 的作业表”
补充:快速切回最近暂停的编辑器(如 vim/nano)
当你在终端里用 vim file.txt 编辑时按了 Ctrl+Z,直接输 fg 就能无缝回到编辑界面,光标位置和缓冲区内容都保持原样。


















