如何在 SystemD 中更改运行级别(目标)?
SystemD 是 Linux 操作系统的系统和服务管理器。它管理启动过程、系统服务,并提供集中式进程管理方式。SystemD 的关键特性之一是使用运行级别(目标)来定义系统启动时的状态。
运行级别(目标)是一组根据系统当前状态启动或停止的服务和进程。了解如何更改运行级别(目标)对于任何 Linux 管理员来说都是一项重要技能。
了解运行级别(目标)
在传统的 Unix 系统中,运行级别用于确定哪些服务在启动时运行。SystemD 用更灵活、更可配置的目标取代了这些传统的运行级别。理解目标的概念非常重要,因为它们的用途与之前系统的运行级别类似,但能够提供更大的灵活性,并能够控制任何给定时间运行的服务。
运行级别(目标)及其用途的说明
SystemD 目标本质上是一组需要同时启动或停止的服务。这些组可以相互依赖,这意味着启动一个目标时,如果需要,也可以启动另一个目标。目标 (Target) 还可用于定义哪些服务应在启动时启动,哪些不应启动。
目标的作用有两个:-
为管理员提供一种有组织的方式,将一组相关服务作为一个单元进行管理。
为 SystemD 提供一种方式来读取和存储系统启动时需要启动的服务信息。
SystemD 中不同运行级别(目标)概述
SystemD 提供了几个内置目标,涵盖了系统可以运行的不同状态 -
poweroff.target - 此目标用于完全关闭系统。所有正在运行的进程和服务将在系统关闭前正常终止。
rescue.target − 此目标提供的功能极少,仅够管理员或用户排除 Linux 安装故障。它不包含任何网络或图形环境支持,因此非常适合在发生严重错误后进行恢复。
multi-user.target − 此目标在系统的多用户环境启动后使用,提供完整的网络和图形支持。
graphical.target − 与多用户目标类似,此目标用于启动图形环境。它启动图形用户界面 (GUI) 所需的所有服务。
除了这些内置目标之外,管理员还可以根据自己的需求创建自定义目标。自定义目标在 SystemD 单元文件中定义,本文稍后将对此进行更详细的讨论。现在我们已经基本了解了运行级别(目标)的含义以及它们在 SystemD 中的功能,接下来让我们了解如何更改它们。
更改运行级别(目标)
识别当前运行级别(目标)
在更改运行级别(目标)之前,必须先识别当前运行级别(目标)。为此,请打开终端并执行以下命令 -
systemctl get-default
此命令将显示当前的默认目标。
例如,如果您看到"multi-user.target",则表示您的系统当前正在运行级别 3。或者,您可以使用以下命令检查所有活动目标 -
systemctl list-units --type=target
这将显示所有活动目标及其状态。
选择新的运行级别(目标)
确定当前运行级别(目标)后,您可以根据需要选择一个新的运行级别(目标)。例如,如果您想从图形模式切换到文本模式,则应选择"multi-user.target"作为新目标。
您可以通过执行以下命令查看所有可用目标 -
systemctl list-unit-files --type=target
此命令的输出将显示所有可用目标及其描述。请仔细选择符合您需求的目标
切换到新的运行级别(目标)
选择新目标后,执行以下命令,并将您选择的目标名称替换为 -
sudo systemctl isolate
这将停止在先前运行级别(目标)下运行的所有服务和应用程序,并启动为新选择的运行级别定义的服务和应用程序。如有任何疑问,请参阅本文的故障排除部分。
更改运行级别(目标)的高级技巧
使用 Systemctl 命令选项临时或永久更改目标
Systemctl 是 SystemD 中用于管理系统服务的主要命令行工具。它提供了丰富的选项,允许用户与系统服务的各个方面进行交互和控制。其中一个选项是临时或永久更改目标的功能。
要使用 systemctl 临时更改目标,您可以运行以下命令 -
$ sudo systemctl isolate target_name.target
例如,要临时从 graphic.target 切换到 multi-user.target,您可以运行 -
$ sudo systemctl isolate multi-user.target
这将立即停止所有与 graphic.target 关联的服务,并启动所有与 multi-user.target 关联的服务。要使用 systemctl 永久更改目标,您可以运行 -
$ sudo systemctl set-default target_name.target
例如,要将 multi-user.target 永久设置为启动时的默认目标,您可以运行 -
$ sudo systemctl set-default multi-user.target
这将导致 SystemD 在每次系统启动时切换到 multi-user.target。
使用符号链接修改默认目标
符号链接是一种包含对其他文件或目录的引用的文件类型。在 SystemD 中,符号链接通常用于修改默认目标。要使用符号链接修改默认目标,请按照以下步骤操作 -
通过运行以下命令识别当前默认目标 -
$ systemctl get-default
通过运行以下命令创建指向所需目标的新符号链接 -
$ sudo ln -sf /usr/lib/systemd/system/target_name .target /etc/systemd/system/default.target
例如,如果我们希望默认目标是 graphic.target,则应运行 -
$ sudo ln -sf /usr/lib/systemd/system/graphical.target /etc/systemd/system/default.target
运行以下命令验证新的默认目标是否已设置:-
$ systemctl get-default
上述步骤将修改系统的默认目标。系统每次启动时,都会从新的默认目标启动。
更改运行级别(目标)的常见问题排查
权限错误
在 SystemD 中尝试更改运行级别(目标)时,可能出现的一个常见问题是权限错误。当用户没有更改目标文件所需的权限时,就会发生这些错误。
要解决此问题,可能需要在尝试更改运行级别(目标)之前使用 sudo 命令或切换到 root 用户帐户。此外,请确保目标文件的所有文件权限均已正确设置。
服务依赖关系
在 SystemD 中更改运行级别(目标)时的另一个常见问题是服务依赖关系。当某个服务需要新运行级别(目标)中不可用的其他服务或资源时,就会出现这些问题。
要解决此问题,可能需要确定导致依赖关系问题的服务,并进行相应的更改。这可能涉及禁用或修改某些对系统不必要的服务。
语法错误
在 SystemD 中尝试更改运行级别(目标)时,语法错误也会导致问题。如果在使用 systemctl 命令更改目标时出现拼写错误或输入了错误的命令,则可能会发生这种情况。
要解决此问题,请仔细检查所有命令语法,并确保 systemctl 命令中使用的任何选项或参数均正确无误。此外,如有需要,请查阅文档或在线资源以获取正确的命令语法。
结论
在本文中,我们了解了 SystemD 及其运行级别(目标)。我们探讨了 SystemD 中不同的运行级别(目标)及其用途。
我们还了解了在 SystemD 中更改运行级别(目标)的分步过程以及一些高级技巧。我们讨论了在 SystemD 中更改运行级别(目标)时可能出现的一些常见问题以及如何排除这些问题。
相关文章
有用资源
linux 参考教程 - 该教程包含有关 linux 的更多信息:https://www.cainiaomax.com/linux/

