如何检查 Linux 系统当前的运行级别
在 systemd 出现之前,大多数主要的 Linux 发行版都运行 Sys-V 风格的 init 系统。 Sys-V 使用七种不同的“运行级别”来确定在系统上启动哪些进程。例如,运行级别 3 通常保留用于命令行及其相关程序,而运行级别 5 将启动 GUI 及其所需的所有进程。结果可能会有所不同,具体取决于相关发行版。
如今,绝大多数 Linux 发行版都采用 systemd 作为其 init 系统。一些发行版仍然使用 Sys-V,其中如上所述的运行级别的实现仍然存在。在 systemd 系统上,运行级别的概念仍然存在,但它们已适应 systemd“目标”。
Sys-V 的残余仍然存在于某些系统上,像 runlevel
这样的命令仍然有效。但一些现代的 systemd 发行版已经完全消除了这种支持。在本指南中,我们将向您展示如何检查 Linux 上的当前运行级别。
在本教程中您将学习:
如何检查当前的运行级别
检查 Linux 系统上的当前运行级别
检查当前运行级别
可以使用以下命令查看当前的运行级别。这仅适用于某些 systemd 发行版,但应该适用于任何 Sys-V 系统。
$ runlevel
或者,您可以运行以下命令:
$ who -r
检查 Linux 系统上的当前运行级别
在上面的屏幕截图中,您可以看到我们的系统当前处于运行级别 5。这是一个 systemd 发行版,这意味着运行级别的概念主要是为了兼容性而保留的。实际上,各种运行级别已映射到相应的 systemd 目标。您可以使用以下命令亲自查看这一点。
$ ls -l /lib/systemd/system/runlevel*
您可以在此处查看 systemd 目标如何映射到 Sys-V 样式运行级别
与运行级别一样,默认有 7 个 systemd 目标。两个主要目标是 multi-user.target
和 graphical.target
。您可以使用以下命令查看系统的默认 systemd 目标。
$ systemctl get-default
确定默认的 systemd 目标
在我们的测试系统上,我们位于 graphical.target
中,这是有意义的,因为我们正在运行 GUI。
要查看哪些服务映射到此目标,请使用以下命令。
$ systemctl list-dependencies graphical.target
检查systemd中graphical.target的依赖关系
要查看服务需要运行哪个 systemd 目标(或运行级别),请尝试以下命令。在此示例中,我们将检查 SSH 服务。
$ systemctl show -p WantedBy sshd.service
检查服务被分配到哪个 systemd 目标
要禁用或启用特定服务在其分配的运行级别上自动启动,可以使用以下命令。
$ sudo systemctl enable sshd.service
OR
$ sudo systemctl disable sshd.service
在 Sys-V init 系统上,您可以使用旧的 chkconfig 命令,该命令不适用于现代 systemd 发行版。例如,要在运行级别 2 上运行 apache2,您将使用以下命令:
# chkconfig apache2 2
结束语
在本指南中,我们了解了如何检查 Linux 系统的当前运行级别。我们还看到了与运行级别相关的命令如何只是 Sys-V 的残余,并且仅在某些 systemd 发行版上实现作为向后兼容性的一种手段。无论您使用的是 systemd(很可能)还是使用 Sys-V 的发行版,此处的命令都将帮助您确定运行级别并启用或禁用进程在其中运行。