Linux 后台运行

LinuxLinuxBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

介绍

在一座早已废弃的疗养院的诡异寂静中,你踏入了一位被困在噩梦中的护士的破旧鞋履。这座荒凉的机构曾经是康复的繁忙庇护所,如今它的墙壁却回荡着被遗忘的过去的低语。艾玛,你在这个令人不安的梦中扮演的护士,面对着一系列神秘的命令行任务,这些任务是她逃脱的关键。你的使命,如果你选择接受,就是帮助艾玛利用 Linux 后台进程的力量,在这令人毛骨悚然的噩梦迷宫中穿行,并揭开通往自由的秘密。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("`Linux`")) -.-> linux/ProcessManagementandControlGroup(["`Process Management and Control`"]) linux/ProcessManagementandControlGroup -.-> linux/bg_running("`Background Running`") subgraph Lab Skills linux/bg_running -.-> lab-271233{{"`Linux 后台运行`"}} end

理解后台进程

在这一步中,艾玛遇到了她的第一个挑战:启动一个无需她直接监督即可持续运行的进程,就像那座古老的疗养院似乎以它自己的方式继续存在一样。为了实现这一点,你将学习如何在 Linux 中将命令行任务放入后台运行。

要将任务放入后台运行,可以在命令后附加 &。例如,如果你有一个需要长时间运行的脚本,可以这样执行:

./long-running-script.sh &

如果她需要验证进程是否在运行,艾玛可以使用 jobs 命令。

现在,让我们模拟一下。在 ~/project 目录下创建一个名为 background-task.sh 的文件,内容如下:

echo '#!/bin/bash' > ~/project/background-task.sh
echo '## Simulate a long-running process' >> ~/project/background-task.sh
echo 'sleep 30' >> ~/project/background-task.sh

使脚本可执行并在后台运行它:

chmod +x ~/project/background-task.sh
cd ~/project
./background-task.sh &

结果应该类似于这样:

[1] 12345

在这里,[1] 是作业编号,12345 是进程 ID。

管理后台进程

在这一步中,艾玛听到远处有节奏的跳动声——就像疗养院深处的心脏在跳动。这声音模仿了无数后台进程的节奏,正是这些进程让 Linux 的核心保持活力。你的任务是管理这些进程,在需要时将它们带到前台,或者将它们推入后台的深渊。

让我们在 ~/project 目录下创建一个名为 manage-bg-process.sh 的新脚本,内容如下:

echo '#!/bin/bash' > ~/project/manage-bg-process.sh
echo '## Infinite loop to keep the script running' >> ~/project/manage-bg-process.sh
echo 'while true; do' >> ~/project/manage-bg-process.sh
echo '   echo "The heart of the sanatorium beats on..."' >> ~/project/manage-bg-process.sh
echo '   sleep 5' >> ~/project/manage-bg-process.sh
echo 'done' >> ~/project/manage-bg-process.sh

在后台运行该脚本,然后使用作业控制命令 fg 将其带到前台:

chmod +x ~/project/manage-bg-process.sh
./manage-bg-process.sh &
jobs
fg %1

如果作业编号不同,请将 %1 替换为相应的作业编号。

总结

在本实验中,我们深入探索了 Linux 后台进程和作业管理的领域。实验设计为一个互动性强、叙事驱动的体验,让你在沉浸于引人入胜的故事中扮演一个角色,同时完成相关任务。通过动手实践,你学会了如何在后台运行脚本、使用 jobs 跟踪它们,以及用 fg 管理它们。这些知识对于在 Linux 系统上管理长时间运行的任务至关重要,也是任何在命令行环境中工作的人的必备技能。

您可能感兴趣的其他 Linux 教程