配置网络服务在系统启动时自动运行

红帽企业 LinuxIntermediate
立即练习

介绍

在本挑战中,你将学习如何在基于 systemd 的系统中配置服务,使其在系统启动时自动运行。虽然通常使用标准命令 systemctl 来完成此操作,但在某些环境(如容器)中该命令可能不可用。你将学习 systemctl 底层的工作机制,即创建符号链接(symbolic links)。对于系统管理员而言,掌握这一知识对于确保关键服务在受限环境中能够正常启用至关重要。

配置服务在系统启动时自动运行

描述

RHEL 9 通常使用 NetworkManager.service 而非传统的 network.service。在本挑战环境中,单元文件(unit files)已经放置在所需的路径下,因此你可以专注于手动创建符号链接的工作流程。你的任务是通过在 multi-user.target 中创建必要的符号链接,手动启用 NetworkManagersshd 服务。

任务

  • 启用 NetworkManager 服务,使其在系统启动时自动运行。
  • 启用 sshd 服务,使其在系统启动时自动运行。

要求

  • 你必须在 /etc/systemd/system/multi-user.target.wants/ 目录下为 NetworkManager.service 创建一个符号链接。该链接必须指向位于 /usr/lib/systemd/system/NetworkManager.service 的源单元文件。
  • 你必须在 /etc/systemd/system/multi-user.target.wants/ 目录下为 sshd.service 创建一个符号链接。该链接必须指向位于 /usr/lib/systemd/system/sshd.service 的源单元文件。
  • 请勿安装额外的软件包。使用环境中已有的单元文件。
  • 所有操作必须使用 sudo 权限执行。
  • 所有命令必须在主目录(~/)下执行。

示例

完成此挑战后,执行 ls -l /etc/systemd/system/multi-user.target.wants/ 命令并过滤 NetworkManagersshd 后的输出应类似于以下内容。这表明这两个服务均已启用。

lrwxrwxrwx. 1 root root 46 Jul 10 12:00 NetworkManager.service -> /usr/lib/systemd/system/NetworkManager.service
lrwxrwxrwx. 1 root root 36 Jul 10 12:01 sshd.service -> /usr/lib/systemd/system/sshd.service

总结

在本挑战中,你学习了在基于 systemd 的 Linux 发行版中启用开机自启服务的底层机制。你手动为 NetworkManagersshd 服务创建了符号链接,重现了 systemctl enable 命令的操作。这项技能对于在标准工具不可用的环境下的系统管理尤为宝贵,它加深了你对 systemd 运行机制的理解,并提升了你的故障排查能力。

✨ 查看解决方案并练习