如何使用 Systemd 列出服务

多数主流的 Linux 发行版都采用 Systemd 作为其初始化系统。 Systemd 的核心功能在于管理“服务”文件,通过启用或禁用这些文件来控制系统行为。 当你希望查看这些服务文件列表时, `systemctl` 命令是你的得力助手。

本指南将深入探讨在 Linux 系统上列出 Systemd 服务文件的多种方法。 在开始之前,请确保你的 Linux 操作系统已安装 Systemd。 准备就绪后,打开终端窗口,我们开始吧。

列出运行中的 Systemd 服务

对于经常使用 Systemd 的用户来说,了解哪些服务在系统启动时处于活动状态至关重要。 使用 `systemctl` 命令,你可以轻松地获取运行中服务的列表。 你可以使用 `systemctl –type=service –state=running` 或简单的 `systemctl –type=service` 命令来查看。

执行这些命令后,系统将显示一个表格,列出所有正在运行的服务以及它们的简要描述。 要开始,请打开终端,然后输入以下命令:

systemctl --type=service --state=running

当需要从庞大的列表中筛选特定服务时,直接查看整个表格可能效率不高。 幸运的是,`systemctl` 命令可以与 `grep` 命令结合使用,实现精准过滤。

例如,若要检查 “snapd.service” 是否正在运行,你可以执行 `systemctl –type=service –state=running | grep ‘snapd’`。 输出结果将仅显示与 Snapd 服务相关的信息,而非整个列表。

systemctl --type=service --state=running | grep 'snapd'

如果想将当前活动服务的列表保存到文本文件中以便日后查阅,请使用以下命令:

systemctl --type=service --state=running > ~/active-services.txt

使用 `cat` 命令可以随时查看此文本文件的内容:

cat ~/active-services.txt

列出处于非活动状态的 Systemd 服务

除了查看活动的服务外,了解哪些服务处于非活动状态同样重要。 你可以使用类似的方法来列出这些服务。 打开终端窗口开始操作。

在终端中,输入 `systemctl –type=service` 命令,并在 `–state=` 选项中指定 `inactive` 来查看所有非活动状态的服务:

systemctl --type=service --state=inactive

与列出活动服务类似,Systemd 将会生成一个表格,清晰地展示哪些服务处于非活动、已失效或未使用状态。 如果你需要过滤此列表以查找特定服务是否已失效,可以将此命令与 `grep` 命令结合使用。

例如,要确认 “updatedb.service” 是否处于非活动状态,可以使用 `systemctl –type=service –state=inactive | grep ‘updatedb.service’` 命令进行搜索。

systemctl --type=service --state=inactive | grep 'updatedb.service'

若要将所有非活动的 Systemd 服务列表保存到文本文件中,请执行:

systemctl --type=service --state=inactive > ~/inactive-services.txt

你可以使用 `cat` 命令直接在终端中查看该文本文件:

cat  ~/inactive-services.txt

列出所有已安装的 Systemd 服务

若要查看所有已安装的 Systemd 服务,无论它们是否处于活动状态,你需要使用 `systemctl list-unit-files –type=service` 命令,省略 `–state` 选项。 省略此选项后,Systemd 将会列出你系统上的所有服务文件。

systemctl list-unit-files --type=service

执行以上命令后,Systemd 将会打印出一个包含系统上每个服务文件的表格。 你可以根据需要对表格进行排序和筛选。

如果需要查找特定的服务文件,可以将 `systemctl list-unit-files –type=service` 命令与 `grep` 命令结合使用进行过滤。 以下命令可以帮助你快速找到所需的服务文件:

systemctl list-unit-files --type=service | grep 'my-service'

想将所有 Systemd 服务文件导出到文本文件以便以后查看? 请使用以下命令:

systemctl list-unit-files --type=service > ~/service-files.txt

使用 `cat` 命令,可以随时查看此文本文件的内容:

cat ~/service-files.txt

显示单个服务的状态

虽然了解如何列出所有 Systemd 服务很有帮助,但有时你需要单独查看特定服务的状态。 这可以通过以下步骤来实现。

首先,打开终端窗口。 在终端中,使用 `systemctl status` 命令,并指定你要查看的服务名称。 例如,要查询 “NetworkManager.service” 的状态,请执行以下命令:

systemctl status NetworkManager

如果需要将此状态命令的输出保存到文本文件中以供以后查看,可以使用以下命令:

systemctl status MyService > ~/MyService-status.txt

使用 `cat` 命令查看文本文件内容:

cat ~/MyService-status.txt