Linux runlevel 命令介绍
runlevel(运行级别)是一种用于表示 Linux 系统操作状态的单个数字。不同的运行级别可以启动不同的系统服务和进程。运行级别通常有七个,从 0 到 6,分别对应不同的系统功能。例如,运行级别 0 表示关机,运行级别 6 表示重启,运行级别 1 表示单用户模式,运行级别 5 表示多用户模式并启动图形界面。
runlevel 命令可以用来查看或修改当前的运行级别。它可以显示系统从启动到现在经历的所有运行级别的变化,也可以切换到指定的运行级别。runlevel 命令是 init 程序的一个接口,init 程序是 Linux 系统启动后的第一个进程,负责管理其他进程的启动和停止。
Linux runlevel 命令适用的 Linux 版本
runlevel 命令适用于大多数使用 System V 风格初始化的 Linux 系统,如 Debian、Ubuntu、RedHat、CentOS、Fedora 等。但是,一些 Linux 系统已经使用 systemd 替代了 init 程序,因此 runlevel 命令可能不再有效。例如,Arch Linux、openSUSE、Kali Linux 等。在这些系统中,可以使用 systemctl 命令来查看或修改系统状态 。
如果您的 Linux 系统没有安装 runlevel 命令,您可以根据您的系统类型选择以下命令来安装它:
# 对于基于 apt 的发行版(如 Debian、Ubuntu、Raspbian、Kali Linux 等):
[linux@bashcommandnotfound.cn ~]$ sudo apt-get install sysvinit-utils
# 对于基于 yum 的发行版(如 RedHat,CentOS 7 等):
[linux@bashcommandnotfound.cn ~]$ sudo yum install sysvinit-tools
# 对于基于 dnf 的发行版(如 Fedora,CentOS 8 等):
[linux@bashcommandnotfound.cn ~]$ sudo dnf install sysvinit-tools
# 对于基于 apk 的发行版(如 Alpine Linux):
[linux@bashcommandnotfound.cn ~]$ sudo apk add --update sysvinit
# 对于基于 pacman 的发行版(如 Arch Linux):
[linux@bashcommandnotfound.cn ~]$ sudo pacman -S sysvinit
Linux runlevel 命令的基本语法
runlevel 命令的基本语法格式如下:
runlevel [OPTIONS] [NEW_RUNLEVEL]
其中,OPTIONS 是可选的参数,用来控制 runlevel 命令的行为。NEW_RUNLEVEL 是可选的参数,用来指定要切换到的新的运行级别。如果不指定 NEW_RUNLEVEL,runlevel 命令只会显示当前的运行级别和上一个运行级别。
Linux runlevel 命令的常用选项或参数说明
runlevel 命令的常用选项或参数如下表所示:
选项或参数 | 说明 |
---|---|
-h, --help | 显示帮助信息 |
-V, --version | 显示版本信息 |
0 | 切换到运行级别 0,即关机 |
1 | 切换到运行级别 1,即单用户模式 |
2 | 切换到运行级别 2,即多用户模式,不启动网络服务 |
3 | 切换到运行级别 3,即多用户模式,启动网络服务,不启动图形界面 |
4 | 切换到运行级别 4,即用户自定义的模式 |
5 | 切换到运行级别 5,即多用户模式,启动网络服务和图形界面 |
6 | 切换到运行级别 6,即重启 |
Linux runlevel 命令实例详解
以下是一些使用 runlevel 命令的常见实例:
实例1:查看当前的运行级别和上一个运行级别
如果不指定任何参数,runlevel 命令会显示当前的运行级别和上一个运行级别。例如:
[linux@bashcommandnotfound.cn ~]$ runlevel
N 5
上面的输出表示,当前的运行级别是 5,即多用户模式,启动网络服务和图形界面。上一个运行级别是 N,即没有上一个运行级别,表示系统是从关机状态启动的。
实例2:切换到单用户模式
如果要切换到单用户模式,可以使用 runlevel 1 命令。这个命令会让系统进入最小化的状态,只有 root 用户可以登录,不启动网络服务或其他进程。这个模式通常用于系统维护或紧急修复。例如:
[linux@bashcommandnotfound.cn ~]$ runlevel 1
执行上面的命令后,系统会提示输入 root 密码,然后进入单用户模式。在这个模式下,可以执行一些系统管理的命令,如 fsck、mount、umount 等。如果要退出单用户模式,可以使用 exit 命令或者 runlevel 命令切换到其他运行级别。
实例3:切换到多用户模式,启动网络服务,不启动图形界面
如果要切换到多用户模式,启动网络服务,但不启动图形界面,可以使用 runlevel 3 命令。这个命令会让系统进入命令行界面,允许多个用户登录,启动网络服务和其他进程。这个模式通常用于服务器或者不需要图形界面的场合。例如:
[linux@bashcommandnotfound.cn ~]$ runlevel 3
执行上面的命令后,系统会切换到运行级别 3,显示登录提示符,可以输入用户名和密码登录。在这个模式下,可以执行一些网络相关的命令,如 ping、ssh、curl 等。如果要切换到图形界面,可以使用 startx 命令或者 runlevel 5 命令。
实例4:切换到多用户模式,启动网络服务和图形界面
如果要切换到多用户模式,启动网络服务和图形界面,可以使用 runlevel 5 命令。这个命令会让系统进入图形界面,允许多个用户登录,启动网络服务和其他进程。这个模式通常用于桌面或者需要图形界面的场合。例如:
[linux@bashcommandnotfound.cn ~]$ runlevel 5
执行上面的命令后,系统会切换到运行级别 5,显示图形登录界面,可以选择用户名和输入密码登录。在这个模式下,可以使用图形界面的程序,如浏览器、编辑器、游戏等。如果要切换到命令行界面,可以使用 Ctrl+Alt+F1~F6 组合键或者 runlevel 3 命令。
实例5:重启系统
如果要重启系统,可以使用 runlevel 6 命令。这个命令会让系统先停止所有的进程,然后重新启动。这个模式通常用于更新系统或者更改系统配置后生效。例如:
[linux@bashcommandnotfound.cn ~]$ runlevel 6
实例6:关机系统
如果要关机系统,可以使用 runlevel 0 命令。这个命令会让系统先停止所有的进程,然后关闭电源。这个模式通常用于安全地关闭系统。例如:
[linux@bashcommandnotfound.cn ~]$ runlevel 0
执行上面的命令后,系统会切换到运行级别 0,显示关机信息,然后断开电源。
实例7:查看系统启动时的默认运行级别
如果要查看系统启动时的默认运行级别,可以使用 grep 命令搜索 /etc/inittab 文件中的 id: 字符串。这个字符串后面的数字就是默认运行级别。例如:
[linux@bashcommandnotfound.cn ~]$ grep "id:" /etc/inittab
id:5:initdefault:
上面的输出表示,系统启动时的默认运行级别是 5,即多用户模式,启动网络服务和图形界面。
实例8:修改系统启动时的默认运行级别
如果要修改系统启动时的默认运行级别,可以使用 vi 命令编辑 /etc/inittab 文件中的 id: 字符串。将后面的数字改为想要的运行级别,然后保存文件。例如,如果要将默认运行级别改为 3,可以执行以下命令:
[linux@bashcommandnotfound.cn ~]$ sudo vi /etc/inittab
# 将 id:5:initdefault: 改为 id:3:initdefault:
# 保存并退出 vi 编辑器
修改后,需要重启系统才能生效。
实例9:查看系统经历的所有运行级别的变化
如果要查看系统从启动到现在经历的所有运行级别的变化,可以使用 runlevel -v 命令。这个命令会显示每次运行级别的切换的时间和原因。例如:
[linux@bashcommandnotfound.cn ~]$ runlevel -v
N 5 2024-01-26 11:52:23 system boot
5 3 2024-01-26 12:05:34 telinit
3 1 2024-01-26 12:10:12 telinit
1 3 2024-01-26 12:15:45 telinit
3 6 2024-01-26 12:20:18 telinit
上面的输出表示,系统在 2024-01-26 11:52:23 启动时进入运行级别 5,然后在 2024-01-26 12:05:34 通过 telinit 命令切换到运行级别 3,接着在 2024-01-26 12:10:12 通过 telinit 命令切换到运行级别 1,再然后在 2024-01-26 12:15:45 通过 telinit 命令切换到运行级别 3,最后在 2024-01-26 12:20:18 通过 telinit 命令切换到运行级别 6,即重启。
实例10:查看 runlevel 命令的版本信息
如果要查看 runlevel 命令的版本信息,可以使用 runlevel -V 命令。这个命令会显示 runlevel 命令的名称、版本号、版权信息和联系方式。例如:
[linux@bashcommandnotfound.cn ~]$ runlevel -V
runlevel from sysvinit 2.96
Written by Miquel van Smoorenburg and Jim Warner.
This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
上面的输出表示,runlevel 命令来自于 sysvinit 2.96,由 Miquel van Smoorenburg 和 Jim Warner 编写,是自由软件,没有任何保证。
实例11:查看 runlevel 命令的帮助信息
如果要查看 runlevel 命令的帮助信息,可以使用 runlevel -h 命令。这个命令会显示 runlevel 命令的用法、选项和示例。例如:
[linux@bashcommandnotfound.cn ~]$ runlevel -h
Usage: runlevel [OPTIONS] [NEW_RUNLEVEL]
Prints the previous and current runlevel, or changes the runlevel.
Options:
-h, --help display this help and exit
-V, --version output version information and exit
-v, --verbose print the runlevel changes
Example:
runlevel 3 changes to runlevel 3
Linux runlevel 命令的注意事项
- runlevel 命令只适用于使用 System V 风格初始化的 Linux 系统,对于使用 systemd 的系统,需要使用 systemctl 命令代替。
- runlevel 命令需要 root 权限才能切换运行级别,普通用户只能查看运行级别。
- runlevel 命令切换运行级别时,会执行相应的启动或停止脚本,这些脚本可以在 /etc/rc.d 目录下找到,也可以根据需要进行修改。
- 如果执行 runlevel 命令时出现 bash: runlevel: command not found 的错误,表示系统没有安装 runlevel 命令,需要按照上面的方法进行安装。
评论区