Linux 如何在SystemD中更改运行级别

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中更改运行级别(目标)时可能出现的一些常见问题以及如何进行故障排除。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程