本简要指南解释了什么是运行级别、Linux 中有多少个运行级别以及如何检查 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
,您可以使用名为的环境变量找到当前和以前的运行级别详细信息 RUNLEVEL
和 PREVLEVEL
.
说为 example,要找出当前的运行级别,您需要运行:
$ echo $RUNLEVEL
要查找上一个运行级别:
$ echo $PREVLEVEL
如果您想将 RunLevel 更改为其他内容,请编辑 /etc/inittab
文件:
$ sudo vi /etc/inittab
查找和编辑条目 initdefault
到您选择的运行级别。 说为 example要将运行级别设置为多用户图形模式(运行级别 5),修改如下所示。
id:5:initdefault:
Save 和 close 文件。 重新启动系统以登录到新的运行级别。
有关运行级别的更多详细信息,请参阅手册页。
$ man runlevel
2.检查Linux中的运行级别(Systemd)
在最新版本的 Linux 系统中(从 RHEL 7 开始,Ubuntu 16.04 LTS),运行级别的概念已被替换为 systemd
目标。
这是列表 Systemd
Linux 发行版中的目标,这些发行版与 Systemd
作为默认服务管理器。
- runlevel0.target, poweroff.target – 停止
- runlevel1.target, rescue.target – 单用户文本模式
- runlevel2.target, multi-user.target – 未使用(用户可定义)
- runlevel3.target, multi-user.target – 完整的多用户文本模式
- runlevel4.target, multi-user.target – 未使用(用户可定义)
- runlevel5.target,graphical.target – 完整的多用户图形模式(带有基于 X 的登录屏幕)
- 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'.
上述命令将仅显示活动目标。
要查看所有加载的目标(活动和非活动),请运行:
$ systemctl list-units --type target --all
如果您想将 RunLevel 更改为其他内容,对于 example 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
希望这可以帮助。