Linux fg命令使用教程
好的,这是一份关于 Linux fg
命令的详细使用教程。
1. 命令概述
fg
是 foreground 的缩写,意为“前台”。它的主要作用是将 在后台运行或暂停的作业 切换到前台来继续运行。
在理解 fg
之前,你需要先了解 Linux 的作业控制概念。
- 前台作业:你当前正在终端中与之交互的作业。它会占用你的终端,在它结束之前,你无法在同一个终端中执行其他命令。
- 后台作业:在后台运行的作业。它不会占用你的终端,你可以继续在终端中输入和执行其他命令。启动后台作业通常通过在命令末尾加上
&
来实现。 - 暂停的作业:一个正在前台运行的作业可以通过按
Ctrl + Z
来暂停,暂停后它就会变成一个后台的、已停止的作业。
fg
命令就是用来管理这些后台或暂停的作业的。
2. 命令语法
fg [%作业编号]
%作业编号
:可选参数。指定要切换到前台的作业编号。如果省略,则默认操作最近一个被放到后台的作业。
3. 基本使用步骤与示例
让我们通过一个完整的例子来演示 fg
的整个生命周期。
步骤 1:启动一个后台作业或暂停一个前台作业
方法 A:直接将命令置于后台
我们使用 &
符号在启动命令时直接将其放到后台。
$ sleep 100 &
[1] 12345 # [作业编号] 进程ID
[1]
是 Shell 分配给这个作业的编号。12345
是这个作业对应的系统进程 ID。
方法 B:暂停一个正在运行的前台作业
我们启动一个长时间运行的前台命令,然后按 Ctrl + Z
将其暂停。
$ sleep 200
# 此时程序在前台运行,终端被占用。
# 按下 Ctrl + Z
^Z
[2]+ Stopped sleep 200
[2]+
表示这是第二个作业,并且是“最近的一个”。Stopped
表示这个作业目前处于暂停状态。
步骤 2:查看当前的作业列表
使用 jobs
命令可以查看当前 Shell 会话中所有的后台/暂停作业。
$ jobs
[1]- Running sleep 100 &
[2]+ Stopped sleep 200
[1]
,[2]
是作业编号。+
号表示默认作业,当fg
或bg
命令不指定参数时,操作的就是这个作业。-
号表示第二个默认作业。Running
表示作业正在后台运行。Stopped
表示作业已暂停。
步骤 3:使用 fg
将作业切换到前台
示例 1:不带参数(操作默认作业 +
)
$ fg
# 因为默认作业 `[2]+` 是 `sleep 200`,并且它是暂停状态
# 所以这条命令会把它调到前台,并继续运行(或等待你输入,如果是 vim 这样的程序)
sleep 200
# 现在终端被这个命令占用,直到它结束或你再次按 Ctrl+Z
示例 2:通过作业编号指定
$ fg %1
# 这将把作业编号为 1 的 `sleep 100` 调到前台
sleep 100
示例 3:通过命令前缀指定
你也可以不记编号,只输入命令的开头部分。
$ fg %sleep
# 这会找到以 "sleep" 开头的作业,并将其调到前台。
# 如果有多个,通常操作的是最近的一个。
4. 常用场景
-
恢复文本编辑器(如 Vim)
- 你正在用 Vim 编辑文件,突然需要执行一个终端命令。
- 按
Ctrl + Z
暂停 Vim,它会回到 Shell 提示符。 - 执行完终端命令后,输入
fg
或fg %vim
,Vim 就会重新回到前台,并且保持你离开时的状态。
-
管理长时间运行的任务
- 你启动了一个耗时很长的编译任务
make
。 - 发现它占用了终端,你想做别的事情。
- 按
Ctrl + Z
暂停它。 - 然后使用
bg
命令将其在后台继续运行(bg
是fg
的兄弟命令,用于在后台恢复运行)。 - 当你想查看编译进度或结果时,再用
fg
把它调回前台。
- 你启动了一个耗时很长的编译任务
-
切换多个任务
- 你有多个任务在后台或暂停状态。
- 使用
jobs
查看列表。 - 使用
fg %1
,fg %2
等在不同的任务间灵活切换。
5. 总结与备忘单
命令 / 快捷键 | 作用 |
---|---|
command & | 直接将命令启动到后台运行 |
Ctrl + Z | 将当前前台任务暂停,并放入后台 |
jobs | 查看所有后台/暂停的作业 |
fg [%n] | 将作业 n (或默认作业)切换到前台运行 |
bg [%n] | 将已暂停的作业 n 在后台继续运行 |
kill %n | 终止作业编号为 n 的作业 |
重要提示:
fg
是 Shell 的内置命令,它是 Bash、Zsh 等 Shell 提供的功能,而不是一个独立的可执行文件。- 当你在前台运行一个作业时,
Ctrl + C
会终止它。 - 作业控制(Jobs)只存在于当前的终端会话中。如果你关闭了终端,所有由它管理的作业都会被终止。对于需要持久运行的任务,应该使用
nohup
、tmux
或screen
。
希望这份教程能帮助你更好地理解和使用 fg
命令!