Linux 如何在SystemD中更改运行级别
SystemD是Linux操作系统的系统和服务管理器。它管理启动过程、系统服务,并提供了一种集中管理进程的方法。SystemD的一个关键特点是使用运行级别(目标)来定义系统在启动时的状态。
运行级别(目标)是一组根据系统当前状态启动或停止的服务和进程。了解如何更改运行级别(目标)是任何Linux管理员的重要技能。
了解运行级别
在传统的Unix系统中,运行级别用于确定启动时将运行哪组服务。SystemD用灵活可配置的目标替代了这些传统的运行级别。重要的是要理解目标的概念,因为它们与先前系统的运行级别有类似的目的,但可以更灵活地控制何时运行哪些服务。
运行级别及其目的的解释
SystemD目标本质上是一组需要一起启动或停止的服务。这些组可以相互依赖,这意味着启动一个目标也可以启动另一个目标(如果需要)。目标还可以用于定义哪些服务应在启动时启动或不启动。
目标有两个目的:
- 提供一种有组织的方式,供管理员将一组相关的服务作为一个单元进行管理。
-
为SystemD提供读取和存储关于在系统启动时需要启动的内容的信息的方式。
SystemD中不同运行级别的概述
SystemD提供了几个内置的目标,涵盖系统可以运行的不同状态:
- poweroff.target – 当完全关机系统时使用此目标。在系统关闭电源之前,所有正在运行的进程和服务都将被优雅地终止。
-
rescue.target – 此目标提供最低限度的功能 – 只能够供管理员或用户对他们的Linux安装进行故障排除。它不包括任何网络或图形环境支持,使其非常适合在发生严重错误后进行恢复。
-
multi-user.target – 当系统的多用户环境已启动时使用此目标,提供完全的网络和图形支持。
-
graphical.target – 类似于multi-user目标,该目标用于启动图形环境。它启动GUI所需的所有服务。
除了这些内置的目标,管理员还可以创建适合自己需求的自定义目标。自定义目标在SystemD单位文件中定义,稍后在本文中将详细讨论。现在我们对运行级别(目标)是什么以及它们如何在SystemD中起作用有了基本的了解,让我们看看如何更改它们。
更改运行级别
确定当前运行级别
在更改运行级别(目标)之前,必须确定当前的运行级别(目标)。要做到这一点,打开终端并执行以下命令 –
systemctl get-default
这个命令将显示当前的默认目标。
例如,如果你看到”multi-user.target”,这意味着你的系统目前在运行级别3下运行。另外,你可以使用以下命令检查所有活动的目标:
systemctl list-units --type=target
这将显示所有活动目标及其状态。
选择一个新的运行级别
一旦确定了当前的运行级别(目标),根据需求选择一个新的级别。例如,如果你想要从图形模式切换到文本模式,你应该选择”multi-user.target”作为你的新目标。
你可以通过执行以下命令查看所有可用的目标-
systemctl list-unit-files --type=target
此命令的输出显示所有可用目标及其描述。仔细选择适合您要求的目标。
切换到新的运行级别
选择您的新目标后,执行以下命令,将其中的 your chosen target name 替换为您选择的目标名。
sudo systemctl isolate
这将停止在先前运行级别(target)下运行的所有服务和应用程序,并启动为此新选择的目标定义的那些。如有任何问题,请参考本文的故障排除部分。
变更运行级别的高级技巧
使用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中更改运行级别(目标)时可能出现的一些常见问题以及如何进行故障排除。