如何在 Linux 中检查运行级别

这个简短的指南解释了什么是运行级别,Linux 中有多少个运行级别以及如何检查 Linux 操作系统中的运行级别。

内容

  1. 什么是运行级别?
  2. 1.检查Linux中的运行级别(SysV init)
  3. 2. 检查 Linux (Systemd) 中的运行级别
  4. 使用“who”命令检查 Linux 运行级别

什么是运行级别?

一种 运行级别 是基于 Unix 的操作系统将运行的模式之一。换句话说,运行级别是一种状态 在里面 以及定义正在运行的系统服务的整个系统。

在 Linux Kernel 中,存在 7 个运行级别,从 0 到 6。系统一次只能引导到一个运行级别。

默认情况下,系统启动到运行级别 3 或运行级别 5。运行级别 3 是 CLI,而 5 是 GUI。 默认运行级别在 /etc/inittab 大多数 Linux 操作系统中的文件。

使用运行级别,我们可以很容易地发现 X 是否正在运行,或者网络是否在运行,等等。

1.检查Linux中的运行级别(SysV init)

这是 Linux 发行版中的运行级别列表,这些发行版与 SysV init 作为默认服务管理器。

  • 0 – 停止
  • 1 – 单用户文本模式
  • 2 – 未使用(用户可定义)
  • 3 – 完整的多用户文本模式
  • 4 – 未使用(用户可定义)
  • 5 – 完整的多用户图形模式(带有基于 X 的登录屏幕)
  • 6 – 重启

现在,让我们看看如何找到运行级别。

要找出系统运行级别,请打开终端并运行以下命令:

$ runlevel

示例输出:

N 3

在上面的输出中,字母 'N' 表示自系统启动以来运行级别没有改变。 和, 3 是当前运行级别,即系统处于 CLI 模式。

在较新版本的 init,您可以使用名为的环境变量找到当前和以前的运行级别详细信息 RUNLEVELPREVLEVEL.

例如,要找出当前的运行级别,您需要运行:

$ echo $RUNLEVEL

要查找以前的运行级别:

$ echo $PREVLEVEL

如果您想将 RunLevel 更改为其他内容,请编辑 /etc/inittab 文件:

$ sudo vi /etc/inittab

查找和编辑条目 initdefault 到您选择的运行级别。 例如,要将运行级别设置为多用户图形模式(运行级别 5),请按如下所示进行修改。

id:5:initdefault:

Save 和 close 文件。 重新启动系统以登录到新的运行级别。

有关运行级别的更多详细信息,请参阅手册页。

$ man runlevel

2. 检查 Linux (Systemd) 中的运行级别

在最新版本的 Linux 系统(从 RHEL 7、Ubuntu 16.04 LTS 开始)中,运行级别的概念已被替换为 systemd 目标。

这是清单 Systemd Linux 发行版中的目标,这些发行版与 Systemd 作为默认服务管理器。

  1. runlevel0.target, poweroff.target – 暂停
  2. runlevel1.target、rescue.target – 单用户文本模式
  3. runlevel2.target, multi-user.target – 未使用(用户可定义)
  4. runlevel3.target, multi-user.target – 完整的多用户文本模式
  5. runlevel4.target, multi-user.target – 未使用(用户可定义)
  6. runlevel5.target,graphical.target – 完整的多用户图形模式(带有基于 X 的登录屏幕)
  7. runlevel6.target,reboot.target – 重启

在 Linux 系统中使用 Systemd 作为默认服务管理器,您可以使用以下命令查找当前目标:

$ systemctl get-default

示例输出:

graphical.target

正如你在上面的输出中看到的,我当前的运行级别(换句话说就是目标)是 5,这是图形模式。

要查看所有当前加载的目标,请运行:

$ systemctl list-units --type target

示例输出:

   UNIT                   LOAD   ACTIVE SUB    DESCRIPTION                                 basic.target           loaded active active Basic System    bluetooth.target       loaded active active Bluetooth    cryptsetup.target      loaded active active Local Encrypted Volumes    getty.target           loaded active active Login Prompts    graphical.target       loaded active active Graphical Interface    local-fs-pre.target    loaded active active Local File Systems (Pre)    local-fs.target        loaded active active Local File Systems    multi-user.target      loaded active active Multi-User System    network-online.target  loaded active active Network is Online    network-pre.target     loaded active active Network (Pre)    network.target         loaded active active Network    nfs-client.target      loaded active active NFS client services    nss-lookup.target      loaded active active Host and Network Name Lookups    nss-user-lookup.target loaded active active User and Group Name Lookups    paths.target           loaded active active Paths    remote-fs-pre.target   loaded active active Remote File Systems (Pre)    remote-fs.target       loaded active active Remote File Systems    rpc_pipefs.target      loaded active active rpc_pipefs.target    rpcbind.target         loaded active active RPC Port Mapper    slices.target          loaded active active Slices    sockets.target         loaded active active Sockets    sound.target           loaded active active Sound Card    swap.target            loaded active active Swap    sysinit.target         loaded active active System Initialization    timers.target          loaded active active Timers    veritysetup.target     loaded active active Local Verity Integrity Protected Volumes  LOAD   = Reflects whether the unit definition was properly loaded.  ACTIVE = The high-level unit activation state, i.e. generalization of SUB.  SUB    = The low-level unit activation state, values depend on unit type.  26 loaded units listed. Pass --all to see loaded but inactive units, too.  To show all installed unit files use 'systemctl list-unit-files'.
检查 Linux (Systemd) 中的运行级别

上述命令将仅显示活动目标。

要查看所有加载的目标(活动和非活动),请运行:

$ systemctl list-units --type target --all

例如,如果您想将 RunLevel 更改为其他内容 runlevel3.target,如下图设置:

$ sudo systemctl set-default runlevel3.target

要仅在当前会话中更改为不同的目标单元,请运行以下命令:

$ sudo systemctl isolate runlevel3.target

有关更多详细信息,请参阅 Systemd 手册页。

$ man systemd

使用“who”命令检查 Linux 运行级别

正如下面评论部分中的一位读者所建议的那样,我们还可以使用 who 命令如下:

$ who -r

示例输出:

     run-level 5  2021-06-09 10:21

希望这可以帮助。

相关阅读:

  • 如何在 Linux 启动时列出启动服务

检查运行级别initLinuxLinux基础知识Linux howtoLinux运行级别Lnux命令systemdSysV UnitTargets