前后台作业切换是什么
作业控制的两个基本动作: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 的写法 |
挂起的进程被暂停在某个指令位置,仍然占着端口、文件锁与内存。长期让重要服务处于挂起状态,表现为「端口有人在听但服务没响应」。
对正在写数据库或文件的进程挂起要格外小心:它停在任意指令位置,长时间暂停可能让对端连接超时或文件锁卡住。
想让任务在退出终端后继续运行,需要在转后台之后脱离作业表,或直接用终端复用器托管;仅仅放后台仍会受终端关闭影响。