如何在 Linux 中检查 systemd 单元是否已启用

LinuxLinuxBeginner
立即练习

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

简介

在这个实验中,你将学习如何检查 Linux 中 systemd 单元的状态。你将使用 systemctl is-enabled 命令来确定一个单元是否被配置为在启动时自动启动,使用 systemctl list-units 命令来列出活动单元。最后,你将探索 systemd 单元文件在 /etc/systemd 目录中的位置。这个实验将为你提供管理服务和理解 systemd 初始化过程的必要技能。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/FileandDirectoryManagementGroup(["File and Directory Management"]) linux(("Linux")) -.-> linux/TextProcessingGroup(["Text Processing"]) linux(("Linux")) -.-> linux/SystemInformationandMonitoringGroup(["System Information and Monitoring"]) linux/BasicFileOperationsGroup -.-> linux/ls("Content Listing") linux/BasicFileOperationsGroup -.-> linux/cat("File Concatenating") linux/FileandDirectoryManagementGroup -.-> linux/cd("Directory Changing") linux/TextProcessingGroup -.-> linux/grep("Pattern Searching") linux/SystemInformationandMonitoringGroup -.-> linux/ps("Process Displaying") linux/SystemInformationandMonitoringGroup -.-> linux/service("Service Managing") subgraph Lab Skills linux/ls -.-> lab-558771{{"如何在 Linux 中检查 systemd 单元是否已启用"}} linux/cat -.-> lab-558771{{"如何在 Linux 中检查 systemd 单元是否已启用"}} linux/cd -.-> lab-558771{{"如何在 Linux 中检查 systemd 单元是否已启用"}} linux/grep -.-> lab-558771{{"如何在 Linux 中检查 systemd 单元是否已启用"}} linux/ps -.-> lab-558771{{"如何在 Linux 中检查 systemd 单元是否已启用"}} linux/service -.-> lab-558771{{"如何在 Linux 中检查 systemd 单元是否已启用"}} end

使用 systemctl is-enabled 检查单元状态

在这一步中,你将学习如何使用 systemctl is-enabled 命令检查 systemd 单元的状态。

Systemd 是 Linux 的系统和服务管理器。它在初始启动过程之后管理进程。systemd 中的“单元”指的是一个配置文件,它描述了如何处理服务、设备、挂载点或其他系统资源。

systemctl is-enabled 命令用于检查一个单元是否被配置为在启动时自动启动。对于那些你希望在系统启动时运行的服务来说,这一点很重要。

让我们来检查 ssh 服务的状态。SSH(安全外壳协议)服务允许你远程连接到服务器。

如果终端尚未打开,请打开它。你可以在桌面左侧找到 Xfce 终端 图标。

输入以下命令并按回车键:

systemctl is-enabled ssh

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

enabled

这个输出表明 ssh 服务已被配置为在系统启动时自动启动。

现在,让我们检查一个可能默认未启用的服务的状态,比如 apache2(一个 Web 服务器)。

输入以下命令并按回车键:

systemctl is-enabled apache2

你可能会看到如下输出:

disabled

这意味着 apache2 服务未被配置为在启动时自动启动。

了解服务是启用还是禁用对于管理系统以及确保必要的服务在重启后能够运行至关重要。

请记住,systemctl is-enabled 命令仅能告诉你一个服务是否被配置为在启动时启动,而不能告诉你它当前是否正在运行。你将在后续步骤中学习如何检查服务是否正在运行。

点击 继续 进入下一步。

使用 systemctl list-units 列出单元

在这一步中,你将学习如何使用 systemctl list-units 命令列出活动的 systemd 单元。

systemctl is-enabled 命令能告诉你一个单元是否被配置为在启动时启动,而 systemctl list-units 命令则会显示哪些单元当前已加载到系统内存中并处于活动状态。这有助于你了解当前由 systemd 管理的服务、设备和其他资源。

如果终端尚未打开,请打开它。

输入以下命令并按回车键:

systemctl list-units

你会看到一长串单元列表。输出通常包含以下列:

  • UNIT:单元的名称。
  • LOAD:单元的配置是否已加载到内存中。
  • ACTIVE:单元的高级激活状态(例如,activeinactivefailed)。
  • SUB:单元的低级激活状态(例如,runningexitedwaiting)。
  • DESCRIPTION:单元的简要描述。

列表可能会很长。为了便于管理,你可以对输出进行过滤。例如,要仅查看服务单元(以 .service 结尾的单元),可以使用以下命令:

systemctl list-units --type service

此命令将显示所有当前活动的服务列表。

你还可以使用 grep 在输出中搜索特定的单元。例如,要查找 ssh 服务:

systemctl list-units | grep ssh

如果 ssh.service 单元处于活动状态,此命令将显示与之对应的行。

systemctl list-units 命令是了解系统当前状态以及 systemd 所管理进程的强大工具。你可以尝试不同的选项和 grep 命令来查找所需的信息。

点击 继续 进入下一步。

查看 /etc/systemd 中的单元文件

在这一步中,你将探索 systemd 存储其单元配置文件的位置,以及如何查看这些文件的内容。

Systemd 单元文件定义了如何管理服务和其他资源,它们通常位于 /etc/systemd/system/ 目录中。该目录包含系统管理员或软件包安装的单元文件。

让我们导航到这个目录并列出其内容。

如果终端尚未打开,请打开它。

首先,使用 cd 命令将当前目录更改为 /etc/systemd/system/

cd /etc/systemd/system/

现在,使用 ls 命令列出该目录中的文件:

ls

你会看到一系列 .service.target 和其他单元文件。这些文件包含了 systemd 处理每个单元的指令。

让我们使用 cat 命令查看 ssh.service 文件的内容。记住,你当前位于 /etc/systemd/system/ 目录中,因此可以直接通过文件名引用该文件。

cat ssh.service

你将看到 ssh.service 文件的内容。这个文件是一个纯文本文件,包含不同的部分和指令,用于告诉 systemd 如何启动、停止和管理 SSH 服务。

例如,你可能会看到 [Unit][Service][Install] 等部分。

  • [Unit] 部分包含有关单元及其依赖项的一般信息。
  • [Service] 部分定义了启动和停止服务时要执行的命令。
  • [Install] 部分包含有关如何安装和启用该单元的信息。

理解这些单元文件的结构和内容是使用 systemd 进行高级系统管理的关键。虽然细节可能很复杂,但只要知道在哪里找到它们以及如何查看它们,就是一个很好的开端。

你可以使用 less 代替 cat 来逐页查看文件内容,这对于较大的文件很有帮助:

less ssh.service

q 退出 less

点击 继续 完成此实验。

总结

在本实验中,你学习了如何使用 systemctl is-enabled 命令检查 systemd 单元是否已启用,从而在系统启动时自动启动。你通过检查 sshapache2 服务的状态进行了实践,了解到“enabled”表示该单元将在启动时启动,而“disabled”则表示不会启动。

你还学习了如何使用 systemctl list-units 命令列出活动的 systemd 单元,该命令能让你更全面地了解系统中当前正在运行或已加载的单元。最后,你探索了如何查看位于 /etc/systemd 目录中的 systemd 单元配置文件,从而深入了解单元是如何定义和配置的。