linux终端中通过ctrl+z暂停任务、jobs查看作业列表、fg恢复前台、bg转入后台,依托shell作业控制机制实现单会话多任务调度。

在 Linux 终端里,不用开多个窗口或重启程序,就能灵活地把一个正在运行的任务暂停、切到后台、再拉回前台——关键就靠 jobs、fg 和 bg 这三个 shell 内建命令。它们依赖 shell 的作业控制(Job Control)机制,只对当前终端会话有效,操作轻量、响应即时。
暂停前台任务:Ctrl+Z 是起点
当你运行一个交互式命令(比如 vim file.txt、tail -f /var/log/syslog 或自定义脚本),卡在前台无法输入新命令时,直接按 Ctrl+Z 即可挂起它。Shell 会向进程发送 SIGTSTP 信号,进程进入“已停止(Stopped)”状态,但保留在内存中,未退出也未丢失数据。
- 不是所有程序都响应 Ctrl+Z(例如用
nohup或systemd启动的守护进程) - 挂起后立即返回 shell 提示符,你可以继续执行其他命令
- 若想中途取消挂起,按
Ctrl+C仍可终止前台进程
查看所有作业状态:jobs 命令要会看
执行 jobs 就能看到当前会话中所有被挂起或后台运行的任务列表。典型输出如下:
[2]- Running sleep 600 &
[3] Stopped python3 script.py
- 方括号里的数字(如
[1])是作业号(job number),后续fg/bg必须用它定位 -
+表示默认作业(最近一次挂起/启动的),-是次默认,省略参数时命令自动作用于+号作业 - 常用选项:
jobs -l显示 PID,jobs -r只看正在运行的,jobs -s只看已停止的
恢复到前台继续操作:fg 命令精准唤醒
fg 把指定作业重新拿到前台运行,恢复对终端的完全控制,适合需要键盘输入或实时观察输出的场景。
-
fg(不带参数)→ 恢复[1]+那个默认作业 -
fg %2→ 恢复作业号为 2 的任务(对应[2]-) -
fg %vim→ 匹配命令名含 “vim” 的作业(简写需唯一,避免歧义) - 恢复后,程序从暂停点继续执行,就像没被打断过
放入后台持续运行:bg 让任务静默干活
bg 适用于那些挂起后无需交互、只需在后台跑完的任务(比如编译、下载、日志轮转脚本)。
-
bg(无参数)→ 把默认停止作业([1]+)放到后台继续运行 -
bg %3→ 启动作业号 3,在后台运行 - 注意:bg 启动的进程默认不向终端输出内容,也不读取键盘输入;如需保留日志,建议提前用
> out.log 2>&1重定向 - 运行后可用
jobs确认状态是否变为Running











