如何在SystemD中更改运行级别(目标)?
SystemD 是 Linux 操作系统的系统和服务管理器。它管理启动过程、系统服务,并提供一种集中管理进程的方式。SystemD 的关键功能之一是使用运行级别(目标)来定义系统启动时的状态。
运行级别(目标)是一组服务和进程,根据系统的当前状态启动或停止。了解如何更改运行级别(目标)对于任何 Linux 管理员来说都是一项重要的技能。
理解运行级别(目标)
在传统的 Unix 系统中,运行级别用于确定启动时运行的服务集。SystemD 用更灵活和可配置的目标取代了这些传统的运行级别。理解目标的概念很重要,因为它们与先前系统的运行级别具有相似的目的,但允许更灵活地控制在任何给定时间运行的服务。
运行级别(目标)及其用途的解释
SystemD 目标本质上是一组需要一起启动或停止的服务。这些组可以相互依赖,这意味着如果一个目标需要另一个目标,启动一个目标也可以启动另一个目标。目标还可以用于定义启动时应启动哪些服务或不应启动哪些服务。
目标的目的是双重的:
为管理员提供一种有组织的方式来将一组相关服务作为一个单元进行管理。
为 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
例如,要临时从 graphical.target 切换到 multi-user.target,您可以运行:
$ sudo systemctl isolate multi-user.target
这将立即停止与 graphical.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
例如,如果我们希望默认目标为 graphical.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 中更改运行级别(目标)时可能出现的一些常见问题以及如何对其进行故障排除。