Linux 作业前台化

LinuxBeginner
立即练习

介绍

在 Linux 操作系统中,多任务处理是一项基本功能,它允许用户同时运行多个进程。Linux 终端的一个强大特性是作业控制——通过在后台运行进程并在需要时将其切换到前台来管理进程的能力。

本实验将向你介绍 Linux 作业控制,特别关注将后台任务切换到前台的过程。你将学习如何在后台启动任务、列出正在运行的作业,以及使用 fg 命令将特定任务切换到前台。在 Linux 环境中处理长时间运行的操作时,这些技能对于提高工作效率非常有价值。

这是一个实验(Guided Lab),提供逐步指导来帮助你学习和实践。请仔细按照说明完成每个步骤,获得实际操作经验。根据历史数据,这是一个 初级 级别的实验,完成率为 100%。获得了学习者 100% 的好评率。

创建并运行后台任务

在这一步中,你将学习如何创建一个模拟长时间运行任务的脚本,并在后台运行它。

理解前台进程与后台进程

在 Linux 终端中,进程可以在前台或后台运行:

  • 前台进程:当一个命令在前台运行时,它会占用你的终端,直到执行完成。在它完成之前,你无法运行其他命令。
  • 后台进程:当一个命令在后台运行时,它会在“幕后”执行,而你的终端仍可用于其他任务。

让我们先导航到项目目录:

cd ~/project

现在,让我们创建一个简单的脚本来模拟一个长时间运行的任务。我们将使用它来演示后台和前台操作:

nano long_running_task.sh

在 nano 编辑器中,输入以下代码:

#!/bin/bash
echo "Starting a long task..."
sleep 60 ## This will pause for 60 seconds
echo "Task completed."

要保存文件,请按 Ctrl+O 然后按 Enter,接着按 Ctrl+X 退出 nano。

接下来,使用以下命令使脚本可执行:

chmod +x long_running_task.sh

让我们通过在命令末尾添加一个与符号 (&) 来在后台运行这个脚本:

./long_running_task.sh &

你应该会看到类似以下的输出:

[1] 1234
Starting a long task...

方括号中的数字 [1] 是作业编号,后面的数字(在这个例子中是 1234)是进程 ID。现在,你的终端可以自由输入其他命令,而脚本会继续在后台运行。

管理多个后台作业

在这一步中,你将学习如何启动多个后台任务并检查它们的状态。

首先,让我们在后台再启动一次我们的脚本:

./long_running_task.sh &

你应该会看到另一个作业编号和进程 ID 显示出来,同时还有“Starting a long task...”消息。

检查后台作业

要查看所有在后台运行的作业列表,请使用 jobs 命令:

jobs

输出应该类似于以下内容:

[1]-  Running                 ./long_running_task.sh &
[2]+  Running                 ./long_running_task.sh &

这显示了:

  • 方括号中的作业编号 [1][2]
  • 每个作业的状态 (Running)
  • 执行的命令
  • + 符号表示“当前”作业(最近启动或使用的作业)
  • - 符号表示如果当前作业完成后将成为当前作业的作业

让我们启动第三个后台作业:

./long_running_task.sh &

再次检查作业列表:

jobs

现在你应该会在列表中看到三个正在运行的作业。

将作业调至前台

在这一步中,你将学习如何使用 fg 命令将后台作业调至前台。

使用 fg 命令

fg 命令可以将一个后台作业调至前台,使其成为你终端中的活动进程。当一个作业处于前台时,它可以接收来自键盘的输入,并且其输出会直接显示在终端中。

要将最近的后台作业(在 jobs 输出中标记为 + 的作业)调至前台,只需输入:

fg

你会看到该命令在前台运行,并且在命令完成之前,你的终端将被占用。输出将如下所示:

./long_running_task.sh

如果任务仍在运行,你需要等待它完成。当它完成时,你会看到:

Task completed.

如果你需要在前台进程完成之前中断它,请按 Ctrl+C

让我们再启动一个后台作业:

./long_running_task.sh &

现在检查作业列表:

jobs

将特定作业调至前台

在这一步中,你将学习如何使用作业编号将特定的后台作业调至前台。

使用 fg 命令搭配作业编号

当你有多个后台作业时,可以通过在 fg 命令中引用作业编号,将特定的作业调至前台。

首先,确保有多个作业正在运行。启动几个新的后台任务:

./long_running_task.sh &
./long_running_task.sh &

检查作业列表及其编号:

jobs

要将特定的作业调至前台,请使用 fg %作业编号 的格式。例如,将作业编号为 1 的作业调至前台:

fg %1

输出将显示该命令在前台运行:

./long_running_task.sh

等待任务完成,或者按 Ctrl+C 中断它。

现在尝试将另一个作业调至前台。例如,如果你有一个编号为 2 的作业:

fg %2

当你需要在多个任务之间切换,按需关注特定进程时,这种技巧非常有用。

总结

在本次实验中,你学习了在 Linux 环境中管理进程的重要技能:

  1. 创建并执行后台任务:你创建了一个模拟长时间运行操作的脚本,并学习了如何使用 & 符号将其在后台运行。
  2. 管理多个后台作业:你学习了如何启动多个后台任务,并使用 jobs 命令检查它们的状态。
  3. 将作业调至前台:你了解了如何使用 fg 命令将后台任务调至前台,既可以是最近的作业,也可以通过引用作业编号来指定特定的作业。

这些作业控制技巧是在 Linux 中进行高效多任务处理的基础。它们使你能够:

  • 运行耗时的进程而不占用终端。
  • 同时监控多个操作。
  • 根据需要在任务之间进行切换。
  • 更有效地管理工作流程。

当你继续使用 Linux 系统时,这些命令将成为你日常操作中的宝贵工具,特别是在处理服务器、运行脚本或管理多个进程时。