Linux bg 命令
bg
是 Linux/Unix 系统中用于作业控制(Job Control)的核心命令之一,全称为 "background"。它的主要功能是将当前暂停的作业(job)转移到后台继续运行。
基本概念
- 前台作业:正在终端中运行并占用输入输出的进程
- 后台作业:在终端后台运行,不占用输入输出的进程
- 作业控制:管理前台和后台进程的能力
命令语法
bg [作业号]
参数说明
参数 | 说明 |
---|---|
无参数 | 作用于当前作业(即最近被暂停的作业) |
作业号 | 指定要操作的作业编号(可通过 jobs 命令查看) |
使用场景
1. 恢复暂停的作业
当你用 Ctrl+Z
暂停一个前台作业后,可以使用 bg
命令让它继续在后台运行:
实例
$ sleep 100 # 启动一个长时间运行的命令
^Z # 按下 Ctrl+Z 暂停
[1]+ Stopped sleep 100
$ bg # 让它在后台继续运行
[1]+ sleep 100 &
^Z # 按下 Ctrl+Z 暂停
[1]+ Stopped sleep 100
$ bg # 让它在后台继续运行
[1]+ sleep 100 &
2. 指定作业号恢复
当有多个暂停的作业时,可以指定作业号:
实例
$ jobs
[1]- Stopped vim file1.txt
[2]+ Stopped python script.py
$ bg 2 # 让第二个作业在后台继续运行
[1]- Stopped vim file1.txt
[2]+ Stopped python script.py
$ bg 2 # 让第二个作业在后台继续运行
3. 与 fg 命令配合使用
bg
和 fg
(foreground)是一对互补命令:
bg
:将作业放到后台运行fg
:将作业带回前台运行
实际应用示例
场景:开发中的典型工作流
实例
# 1. 启动编辑器
$ vim app.py
# 2. 需要临时执行测试(按下 Ctrl+Z 暂停 vim)
^Z
[1]+ Stopped vim app.py
# 3. 运行测试脚本
$ python test.py
# 4. 测试完成后,让编辑器回到后台继续工作
$ bg 1
[1]+ vim app.py &
# 5. 查看后台作业
$ jobs
[1]+ Running vim app.py &
$ vim app.py
# 2. 需要临时执行测试(按下 Ctrl+Z 暂停 vim)
^Z
[1]+ Stopped vim app.py
# 3. 运行测试脚本
$ python test.py
# 4. 测试完成后,让编辑器回到后台继续工作
$ bg 1
[1]+ vim app.py &
# 5. 查看后台作业
$ jobs
[1]+ Running vim app.py &
常见问题解答
Q1: 如何查看当前有哪些作业?
使用 jobs
命令:
实例
$ jobs
[1]- Running sleep 100 &
[2]+ Stopped vim notes.txt
[1]- Running sleep 100 &
[2]+ Stopped vim notes.txt
Q2: bg 和 & 有什么区别?
&
:在命令启动时直接放到后台bg
:将已经暂停的作业放到后台
Q3: 关闭终端后,bg 的作业会怎样?
默认情况下,后台作业会随终端关闭而终止。如需保留,可使用:
实例
nohup command & # 或者使用 tmux/screen
进阶技巧
1. 结合 disown 使用
让作业与终端解绑,即使关闭终端也不会终止:
实例
$ sleep 1000
^Z
$ bg
$ disown %1
^Z
$ bg
$ disown %1
2. 使用作业号快捷方式
%n
:作业号 n%str
:以 str 开头的作业%?str
:包含 str 的作业
实例
$ bg %sleep # 恢复包含 "sleep" 的作业
总结流程图
掌握 bg
命令能显著提高你在 Linux 下的工作效率,特别是在需要同时处理多个任务时。结合 jobs
、fg
和 kill
等命令,你可以实现强大的作业控制能力。
点我分享笔记