4

轻松学会 Linux 服务管理,使用 systemctl 命令一键搞定

 1 year ago
source link: https://www.sysgeek.cn/systemctl-command/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client
Linux

如果您是 Linux 用户或管理员,如何管理系统中的服务呢?服务是指在后台运行并提供基本功能(例如网络、打印、日志等)的程序。

要在 Linux 中列出、启动、停止、启用、禁用或重启服务,可以使用 systemctl 命令。该命令是 systemd 的一部分,是 Ubuntu 和 Debian 等现代 Linux 发行版的系统和服务管理器。

如果您是 Linux 初学者,希望使用 systemctl 命令管理 Linux 服务,请继续阅读本文。

使用 systemctl 命令列出所有 Linux 服务

要列出 Linux 系统上的所有服务,请在「终端」中运行以下命令:

复制
sudo systemctl --type=service

这将输出显示包含五列的表格:UNITLOADACTIVESUBDESCRIPTION

使用 systemctl 命令列出Linux 服务
使用 systemctl 命令列出Linux 服务

UNIT 列显示服务单元文件的名称,该文件是服务的配置和定义文件。该文件包含有关服务的功能和管理方式的信息。你也可以在 DESCRIPTION 列中查看服务的简要描述。

LOAD 列显示服务单元文件是否加载到内存中。ACTIVE 列显示服务是否正在运行。最后,SUB 列显示服务的子状态,例如 Running、exited 或 failed。

你也可以使用 -a--all 选项代替 --type service 来列出所有类型的单元,而不仅仅是服务。

使用 systemctl 命令列出活动服务

如果只想查看当前 Linux 系统上运行的服务,请在「终端」中运行以下命令:

复制
sudo systemctl --type=service --state=active

该命令将过滤掉那些不活动(已停止)或失败的服务。

使用 systemctl 命令列出活动服务
使用 systemctl 命令列出活动服务

使用 systemctl 列出不活动的服务

同样地,如果您只想查看当前 Linux 系统中停止运行的服务,请在「终端」中运行以下命令:

复制
sudo systemctl --type=service --state=inactive

这将过滤掉那些正在运行或失败的服务。

使用 systemctl 列出不活动的服务
使用 systemctl 列出不活动的服务

使用 systemctl 列出失败服务

如果要查看 Linux 系统上启动或停止失败的服务,请打开「终端」并运行以下命令:

复制
sudo systemctl --type=service --state=failed

这将过滤掉当前活动(正在运行)或不活动(已停止)的服务。

使用 systemctl 命令列出失败服务
使用 systemctl 命令列出失败服务

使用 systemctl 列出已启用的服务

要查看哪些服务会随 Linux 系统启动时自动启动,请在「终端」中运行以下命令:

复制
systemctl list-unit-files --state=enabled

该命令将输出包含两列的表格:UNIT FILESTATEUNIT FILE 列显示服务单元文件的名称,STATE 列显示服务是否已启用。

使用 systemctl 命令列出已启用的服务
使用 systemctl 命令列出已启用的服务

使用 systemctl 列出已禁用的服务

要查看哪些服务已禁用并且不会随 Linux 系统自动启动,请在「终端」中运行以下命令:

复制
systemctl list-unit-files --state=disabled

这将过滤掉已启用或屏蔽的服务。

使用 systemctl 命令列出已禁用的服务
使用 systemctl 命令列出已禁用的服务

使用 systemctl 命令查看服务详细信息

要查看特定 Linux 服务的更多详细信息,请在「终端」中运行以下命令:

复制
sudo systemctl status <service-name>

<service-name> 替换为要查看的服务单元文件的名称。

使用 systemctl 命令查看服务详细信息
使用 systemctl 命令查看服务详细信息

这将显示服务的描述、加载状态、活动状态、子状态、进程 ID (PID)、内存使用、CPU 使用情况和最近的服务日志等信息。

还可以使用 show 子命令替换掉 status,以 名称=值 的格式显示所有服务属性。

使用 systemctl 命令显示服务属性
使用 systemctl 命令显示服务属性

使用 systemctl 命令启动服务

要启用 Linux 系统中的某项服务,请在「终端」中执行以下命令:

复制
sudo systemctl start <service-name>

<service-name> 替换为要启动的服务单元文件的名称。

使用 systemctl 命令启动服务
使用 systemctl 命令启动服务

这将在后台启动服务并返回到提示符。您可以使用 status 子命令来验证服务是否正在运行。

使用 systemctl 命令停止服务

要停止 Linux 系统上运行的某个服务,请在「终端」中运行此命令:

复制
sudo systemctl stop <service-name>

<service-name> 替换为您想要停止的服务单元文件的名称。

使用 systemctl 命令停止服务
使用 systemctl 命令停止服务

这将在后台停止服务并返回提示符。您可以使用 status 子命令验证服务是否已停止。

使用 systemctl 命令重启服务

想要编辑并重新加载服务的配置文件并应用更改吗?如果是的话,之后需要重启服务。要重启正在运行的服务,打开「终端」并运行以下命令:

复制
sudo systemctl restart <service-name>

<service-name> 替换为要重启的服务单元文件的名称。

使用 systemctl 命令重启服务
使用 systemctl 命令重启服务

这将在后台停止并重新启动服务,然后返回到提示符。您可以使用 status 子命令来验证服务是否正在运行。

使用 systemctl 重新加载服务

一些服务支持重新加载它们的配置而不需要重启。重新加载服务允许您对这些服务的配置文件进行小的更改而无需重新启动。这比重启服务更快,还不会造成服务中断。

要重新加载支持此功能的服务,请在「终端」中使用以下命令:

复制
sudo systemctl reload <service-name>

<service-name> 替换为您要重新加载的服务单元文件的名称。

使用 systemctl 命令重新加载服务
使用 systemctl 命令重新加载服务

这将在后台重新加载服务,并返回到提示符。您可以使用 status 子命令验证服务是否正在运行。

使用 systemctl 命令启用服务

如果您想让一个服务在系统启动时自动启动,可以在「终端」中运行以下命令:

复制
sudo systemctl enable <service-name>

<service-name> 替换为您要启用的服务单元文件的名称。

使用 systemctl 命令启用服务
使用 systemctl 命令启用服务

此命令将创建一个符号链接,从服务单元文件指向 /etc/systemd/system 下的位置,以告诉 systemd 在启动时启动它。

您还可以使用 --now 参数同时启用和启动服务。例如:

复制
sudo systemctl enable –-now <service-name>

使用 systemctl 命令禁用服务

要在系统启动时禁用服务,请在「终端」中运行以下命令:

复制
sudo systemctl disable <service-name>

<service-name> 替换为要禁用的服务单元文件的名称。

使用 systemctl 命令禁用服务
使用 systemctl 命令禁用服务

这将从 /etc/systemd/system 中删除该服务单元文件的符号链接,并会告诉 systemd 在启动时不要启动它。

你也可以使用 --now 参数同时禁用和停止服务:

复制
sudo systemctl disable --now <service-name>

使用 systemctl 列出被屏蔽的服务

屏蔽服务是指将其单元文件链接到 /dev/null,从而防止 systemd 加载或操作它。这增加了额外的保护层。

要查看 Linux 系统中有哪些服务被屏蔽并且无法手动或自动启动或停止,请在「终端」中运行此命令:

复制
systemctl list-unit-files --state=masked

被屏蔽的服务列表将显示在一列中(在 STATE 列下列出)。

使用 systemctl 命令列出被屏蔽的服务
使用 systemctl 命令列出被屏蔽的服务

使用 systemctl 屏蔽服务

在「终端」中运行以下命令,可以屏蔽服务:

复制
sudo systemctl mask <service-name>

<service-name> 替换为要屏蔽的服务单元文件的名称。

使用 systemctl 命令屏蔽服务
使用 systemctl 命令屏蔽服务

这将创建从服务单元文件到 /dev/null 的符号链接,以防止 systemd 加载或对它进行操作。

使用 systemctl 取消服务屏蔽

您可以取消之前屏蔽的服务。这将删除到 /dev/null 的符号链接,使其可以在其他地方使用和加载。

要取消先被屏蔽的服务,请在「终端」中运行此命令:

复制
sudo systemctl unmask <service-name>

<service-name> 替换为要取消屏蔽的服务单元文件的名称。

使用 systemctl 命令取消服务屏蔽
使用 systemctl 命令取消服务屏蔽

如果您的 Linux 电脑使用 systemd 管理系统服务,您可以使用 systemctl 命令管理它们。这将使您可以更好地控制 Linux 电脑,包括启动、停止、重新加载和禁用服务等。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK