fg 命令是 Unix 和类 Unix 操作系统中的一个重要命令,用于将后台运行的任务(进程)恢复到前台。它的全称是 “foreground”。下面将全面介绍 fg 命令,包括所有可能的使用场景和具体示例。


一、fg 命令概述

fg 命令主要用于以下场景:将后台任务恢复到前台、恢复被挂起的任务以及管理多任务环境中的任务优先级。


二、基本语法

1
fg [job_spec]

其中 job_spec 是任务的标识符,可以是任务编号、命令名等。job_spec 的常见格式包括:

  • %n:任务编号,例如 %1
  • %string:任务名,以 string 开头的任务。
  • %?string:任务名,包含 string 的任务。

三、使用场景及具体例子

3.1 将最近的后台任务恢复到前台

当你有一个或多个任务在后台运行时,可以使用 fg 命令将最近的一个任务恢复到前台。

1
2
3
4
5
sleep 100 &
# 任务 sleep 100 在后台运行

fg
# 将最近的后台任务恢复到前台

3.2 将指定的后台任务恢复到前台

你可以通过任务编号或任务名来指定要恢复到前台的任务。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
sleep 100 &
sleep 200 &
# 两个任务在后台运行

jobs
# [1]+  Running                 sleep 100 &
# [2]-  Running                 sleep 200 &

fg %1
# 将任务编号为 1 的任务(sleep 100)恢复到前台

3.3 恢复包含特定字符串的任务

如果你有多个任务,并且不记得具体编号,可以通过任务名的一部分来恢复任务。

1
2
3
4
5
6
vi file1 &
vi file2 &
# 两个 vi 编辑器任务在后台运行

fg %?file2
# 将包含 'file2' 的任务恢复到前台

3.4 恢复被挂起的任务

有时,你可能会挂起一个正在前台运行的任务,然后将其恢复。

1
2
3
4
5
6
7
8
sleep 1000
# 按下 Ctrl+Z 挂起任务

jobs
# [1]+  Stopped                 sleep 1000

fg %1
# 将挂起的任务恢复到前台

3.5 在多任务环境中管理任务

在复杂的多任务环境中,可以通过 fg 命令来管理不同任务的优先级。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
# 启动几个长时间运行的任务
sleep 1000 &
sleep 2000 &
sleep 3000 &

jobs
# 列出所有后台任务

fg %3
# 将任务编号为 3 的任务恢复到前台

四、补充说明

  1. 任务编号

    • 可以使用 jobs 命令查看所有后台和挂起的任务及其编号。
    • 任务编号在当前 shell 会话中是唯一的,但在不同的 shell 会话中可能会重复。
  2. 任务状态

    • Running:任务正在后台运行。
    • Stopped:任务被挂起。
    • Done:任务已完成。
  3. 组合使用

    • fg 命令通常与 &(后台运行符)、jobs(查看后台任务)和 bg(将任务放到后台)等命令一起使用,以实现灵活的任务管理。