首页/系统/Linux 运维命令速查/fg/bg 前后台作业切换
进程与作业69 条

fg/bg 前后台作业切换

Ctrl+Z 把前台任务挂起,bg 让它后台继续跑,fg 拉回前台;跑长命令忘了加 & 时的救命操作。

Linux 运维命令速查系统更新于 2026-10-13

前后台作业切换是什么

作业控制的两个基本动作:Ctrl+Z 把正在前台运行的任务挂起(进程被暂停,不是终止),bg 让它转到后台继续运行,fg 把它拉回前台。最常见的用处是「跑长命令忘了加后台符号」——例如一条要几分钟的传输或编译,按 Ctrl+Z 再 bg,就能腾出终端而不用中断任务。理解挂起与终止的区别是关键:挂起的进程仍然占着内存、端口与文件锁。

基本信息

适用平台bash、zsh 等支持作业控制的 shell
语法Ctrl+Z 挂起,bg [%编号] 转后台,fg [%编号] 转前台
关键区别挂起不等于终止,进程仍占用资源
相关命令jobs 查看,kill 终止,disown 脱离作业表
常见组合挂起后转后台再脱离作业表
注意对正在写数据的进程挂起要谨慎

典型使用场景

  • 长命令忘了加后台符号,用挂起再转后台的方式让出终端。
  • 临时查看系统状态后发现任务被挂起,重新拉回前台继续。
  • 多个作业之间切换:把不着急的放后台,把当前的拉回前台。
  • 交互式程序短暂让位,处理完别的事情再继续。
  • 配合脱离作业表操作,让任务在退出终端后继续运行。

常用操作

常用操作
# 正在跑一个耗时命令时:
# 按 Ctrl+Z           把前台任务挂起
jobs                   # 确认作业编号与状态
bg                     # 当前作业转入后台继续
fg                     # 拉回前台
fg %2                  # 指定作业编号拉回前台
disown %1              # 脱离作业表,退出终端不再受影响
sleep 300 &            # 直接后台运行,省去挂起这一步
jobs -l                # 确认状态与进程号

操作与效果对照

操作或命令效果使用要点
Ctrl+Z挂起前台任务进程被暂停,仍占用资源
bg转后台继续在挂起状态下恢复运行
fg拉回前台会重新占用当前终端
jobs查看作业列表确认编号与状态再操作
disown脱离作业表退出终端不再影响该任务
百分号编号指定作业fg %2、bg %1 的写法
挂起的进程被暂停在某个指令位置,仍然占着端口、文件锁与内存。长期让重要服务处于挂起状态,表现为「端口有人在听但服务没响应」。
对正在写数据库或文件的进程挂起要格外小心:它停在任意指令位置,长时间暂停可能让对端连接超时或文件锁卡住。
想让任务在退出终端后继续运行,需要在转后台之后脱离作业表,或直接用终端复用器托管;仅仅放后台仍会受终端关闭影响。

易错点

  • 把 Ctrl+Z 当成终止操作,以为任务已经结束;实际进程只是被暂停,仍占用端口与锁,后续启动同名服务会冲突。
  • 挂起后直接关掉终端,任务随会话结束被清理,未完成的数据写入可能损坏文件。
  • 对写文件的进程长时间挂起,导致文件锁一直不释放,其他进程阻塞等待。
  • 用 fg 恢复时误选了别的作业编号,把不该拉回前台的任务拿到屏幕上。

数据来源与参考

  • man 1 bash(JOB CONTROL 章节)

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌