如何检查 Linux 系统是否处于单用户模式

LinuxLinuxBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在这个实验中,你将学习如何检查 Linux 系统的运行状态,特别关注如何判断系统是否处于单用户模式。你将使用 runlevelwho -r 命令来探索传统的运行级别(runlevel),并使用 systemctl get-default 命令检查现代 systemd 环境中的默认系统目标(target)。这个实践经验将为你提供理解和验证系统运行状态的实用技能。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicSystemCommandsGroup(["Basic System Commands"]) linux(("Linux")) -.-> linux/FileandDirectoryManagementGroup(["File and Directory Management"]) linux(("Linux")) -.-> linux/SystemInformationandMonitoringGroup(["System Information and Monitoring"]) linux(("Linux")) -.-> linux/UserandGroupManagementGroup(["User and Group Management"]) linux/BasicSystemCommandsGroup -.-> linux/help("Command Assistance") linux/FileandDirectoryManagementGroup -.-> linux/which("Command Locating") linux/SystemInformationandMonitoringGroup -.-> linux/service("Service Managing") linux/UserandGroupManagementGroup -.-> linux/whoami("User Identifying") subgraph Lab Skills linux/help -.-> lab-558810{{"如何检查 Linux 系统是否处于单用户模式"}} linux/which -.-> lab-558810{{"如何检查 Linux 系统是否处于单用户模式"}} linux/service -.-> lab-558810{{"如何检查 Linux 系统是否处于单用户模式"}} linux/whoami -.-> lab-558810{{"如何检查 Linux 系统是否处于单用户模式"}} end

使用 runlevel 检查运行级别

在这一步中,我们将探讨 Linux 中运行级别(runlevel)的概念,以及如何使用 runlevel 命令检查当前的运行级别。

运行级别代表了 Linux 系统的不同运行状态。每个运行级别定义了哪些服务会被启动和停止。例如,某个运行级别可能适用于带有图形界面的多用户系统,而另一个运行级别可能适用于用于维护的单用户模式。

虽然现代 Linux 发行版通常使用 systemd 目标(target)而非传统的运行级别,但了解运行级别仍然很有价值,因为你可能会在较旧的系统或文档中遇到它们。

让我们来检查一下你 LabEx 环境的当前运行级别。如果你还没有打开终端,请先打开它。

输入以下命令并按回车键:

runlevel

你应该会看到类似如下的输出:

N 5

让我们来分析一下这个输出:

  • 第一个字符(在这个例子中是 N)表示上一个运行级别。N 表示没有上一个运行级别(系统刚刚启动)。
  • 第二个字符(在这个例子中是 5)表示当前的运行级别。

在传统的 SysVinit 系统中,常见的运行级别包括:

  • 0:停机(关闭系统)
  • 1:单用户模式(用于维护)
  • 2:多用户模式,无网络
  • 3:多用户模式,有网络(文本控制台)
  • 4:未使用/用户可定义
  • 5:多用户模式,有网络和图形界面
  • 6:重启(重新启动系统)

你的 LabEx 环境运行在运行级别 5,这对应于一个带有图形桌面环境的多用户系统。

了解运行级别有助于你排查系统启动问题并管理系统服务。

点击 继续 进入下一步。

使用 who -r 验证运行级别

在上一步中,我们使用 runlevel 命令检查了当前的运行级别。另一种获取类似信息的方法是使用带有 -r 选项的 who 命令。

who 命令通常用于显示哪些用户登录到了系统。然而,使用 -r 选项时,它会显示当前的运行级别。

让我们来试试看。在你的终端中,输入以下命令并按回车键:

who -r

你应该会看到类似如下的输出:

           run-level 5  <DATE> <TIME>

这个输出确认了系统当前处于运行级别 5。日期和时间表示系统进入该运行级别的时间。

比较 runlevelwho -r 的输出,你会发现这两个命令都提供了关于当前运行级别的信息,只是格式不同。who -r 给出的输出更具描述性,包含了日期和时间。

在 Linux 中,使用不同的命令来实现相似的结果是很常见的。了解多种获取所需信息的方法很有帮助,因为某些命令可能在某些系统上可用,而在其他系统上不可用,或者某个命令可能比另一个命令提供更详细的信息。

练习使用 runlevelwho -r 这两个命令,以便自如地检查系统的运行状态。

点击 继续 进入下一步。

使用 systemctl get-default 检查默认目标

如前所述,现代 Linux 发行版通常使用 systemd 而非传统的 SysVinit 系统。systemd 使用“目标(target)”,其概念与运行级别(runlevel)类似,但提供了更多的灵活性。

目标是一组 systemd 单元(如服务、挂载点、套接字等),系统需要启动或停止这些单元以达到所需的状态。默认目标是系统启动时进入的状态。

我们可以使用 systemctl 命令与 systemd 进行交互。get-default 子命令用于显示默认目标。

注意: 由于 LabEx 环境在 Docker 容器中运行,与完整的操作系统安装相比,systemctl 命令的行为可能有所不同,或者显示的信息有限。不过,我们仍然可以用它来理解默认目标的概念。

在你的终端中,输入以下命令并按回车键:

systemctl get-default

你应该会看到类似如下的输出:

graphical.target

这个输出表明该系统的默认目标是 graphical.target。这个目标通常包含了带有图形桌面环境的多用户系统所需的所有服务,这与我们之前看到的运行级别 5 相对应。

其他常见的目标包括:

  • multi-user.target:类似于运行级别 3,是一个没有图形界面的多用户系统。
  • rescue.target:用于系统恢复的单用户模式。
  • reboot.target:用于重启系统。
  • poweroff.target:用于关闭系统。

虽然在这个 LabEx 环境中你可能无法更改默认目标,但了解如何使用 systemctl get-default 来检查它是管理基于 systemd 的系统的一项基本技能。

你现在已经学习了三种不同的方法来检查系统的运行状态或其默认启动状态:runlevelwho -rsystemctl get-default

点击 继续 完成本次实验。

总结

在本次实验中,我们学习了如何在 Linux 系统中检查系统的运行状态。首先,我们探讨了运行级别(runlevel)的概念,它代表了不同的系统状态,并使用 runlevel 命令来确定当前的运行级别。我们理解了输出的含义,包括前一个和当前的运行级别,并回顾了传统 SysVinit 系统中常见的运行级别。

接着,我们学习了使用 who -r 命令来验证运行级别的另一种方法,该命令提供了关于系统运行级别的类似信息。最后,我们研究了现代 Linux 发行版(通常使用 systemd)如何通过目标(target)而非传统的运行级别来管理系统状态,并使用 systemctl get-default 命令来确定默认目标。