介绍
在 Linux 操作系统中,多任务处理是一项基本功能,它允许用户同时运行多个进程。Linux 终端的一个强大特性是作业控制——通过在后台运行进程并在需要时将其切换到前台来管理进程的能力。
本实验将向你介绍 Linux 作业控制,特别关注将后台任务切换到前台的过程。你将学习如何在后台启动任务、列出正在运行的作业,以及使用 fg 命令将特定任务切换到前台。在 Linux 环境中处理长时间运行的操作时,这些技能对于提高工作效率非常有价值。
在 Linux 操作系统中,多任务处理是一项基本功能,它允许用户同时运行多个进程。Linux 终端的一个强大特性是作业控制——通过在后台运行进程并在需要时将其切换到前台来管理进程的能力。
本实验将向你介绍 Linux 作业控制,特别关注将后台任务切换到前台的过程。你将学习如何在后台启动任务、列出正在运行的作业,以及使用 fg 命令将特定任务切换到前台。在 Linux 环境中处理长时间运行的操作时,这些技能对于提高工作效率非常有价值。
在这一步中,你将学习如何创建一个模拟长时间运行任务的脚本,并在后台运行它。
在 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 环境中管理进程的重要技能:
& 符号将其在后台运行。jobs 命令检查它们的状态。fg 命令将后台任务调至前台,既可以是最近的作业,也可以通过引用作业编号来指定特定的作业。这些作业控制技巧是在 Linux 中进行高效多任务处理的基础。它们使你能够:
当你继续使用 Linux 系统时,这些命令将成为你日常操作中的宝贵工具,特别是在处理服务器、运行脚本或管理多个进程时。