介绍
在本挑战中,你将学习如何在基于 systemd 的系统中配置服务,使其在系统引导时自动启动。虽然通常使用标准命令 systemctl 来完成此操作,但在某些环境(如容器)中该命令可能不可用。你将学习 systemctl 底层的工作机制,即创建符号链接。对于系统管理员而言,掌握这一知识对于确保关键服务在受限环境中能够正常启用至关重要。
配置服务在开机时自动启动
描述
在当前的 RHEL 9 系统中,网络由 NetworkManager.service 而非传统的 network.service 管理。启用开机自启服务的过程,实际上是在目标(target)的 wants 目录与服务的单元文件(unit file)之间创建符号链接。你的任务是通过在 multi-user.target 中创建必要的符号链接,手动启用 NetworkManager 和 sshd 服务。
任务
- 启用
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/ 命令并过滤 NetworkManager 和 sshd 时,输出应类似于以下内容。这表明这两个服务均已启用。
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 发行版中启用开机自启服务的底层机制。你手动为 NetworkManager 和 sshd 服务创建了符号链接,重现了 systemctl enable 命令的操作。这项技能在标准工具不可用的系统管理环境中非常有价值,它加深了你对 systemd 运行机制的理解,并提升了你的故障排查能力。



