摘要:运行级别是 Linux 系统处于某种状态或模式的标志。它决定了哪些服务应该启动或停止。每个运行级别对应一个特定的系统状态,如单用户模式、图形界面、关机等。
运行级别是 Linux 系统处于某种状态或模式的标志。它决定了哪些服务应该启动或停止。每个运行级别对应一个特定的系统状态,如单用户模式、图形界面、关机等。
在传统的 SysV init 系统中,运行级别由数字表示(0 到 6)。而在 modern Linux 发行版(如 CentOS 7+/Debian 8+/Ubuntu 16.04+)中,systemd 接管了 init 系统,运行级别由“目标(Target)”来取代,但本质上仍可对应传统级别。
⚠️ 注意:运行级别 0 和 6 不应作为默认运行级别,否则系统会陷入关机或重启循环。
runlevel输出示例:
N 3含义:当前运行级别为 3,“N” 表示无法检测上一个运行级别(如系统刚启动)。
init 5 # 切换到图形界面init 3 # 切换到命令行模式或使用:
id:3:initdefault:保存后,系统下次启动默认进入运行级别 3。
各运行级别对应的服务脚本目录如下:
/etc/rc.d/rc0.d//etc/rc.d/rc1.d//etc/rc.d/rc2.d//etc/rc.d/rc3.d//etc/rc.d/rc5.d//etc/rc.d/rc6.d/这些目录中包含 S(start)和 K(kill)开头的链接,指向 /etc/init.d/ 目录下的实际服务脚本。
例如:
/etc/rc.d/rc3.d/S80httpd -> /etc/init.d/httpd表示在运行级别 3 中启动 Apache 服务。
随着 systemd 的引入,传统的运行级别机制被更灵活的 Target 所取代。虽然 runlevel 命令仍然可用,但它已成为对 systemd 的兼容层。
SysV 级别systemd Target0poweroff.target1rescue.target3multi-user.target5graphical.target6reboot.targetsystemctl get-default或使用:
systemctl list-units --type=target查看某个 Target 包含的服务:
systemctl list-dependencies multi-user.target创建一个自定义 target 文件:sudo cp /usr/lib/systemd/system/multi-user.target /etc/systemd/system/my-custom.target修改内容或添加依赖服务:[Unit]Description=My Custom RunlevelRequires=network.target sshd.serviceAfter=network.target重新加载配置:sudo systemctl daemon-reexecsudo systemctl set-default my-custom.target特性对比SysV initsystemd启动方式顺序执行启动脚本并行启动,提高速度运行级别数字(0-6)target(如 multi-user.target)服务管理service 命令systemctl 命令脚本路径/etc/init.d//usr/lib/systemd/system/ 等兼容性旧系统使用新系统主流,兼容传统方式运行级别不仅是历史遗产,它们仍然以“目标”的形式深深嵌入 modern Linux 系统之中。无论你管理的是经典的 CentOS 6,还是现代的 Ubuntu 20.04,理解运行级别及其现代替代机制 Target,都是迈向资深 Linux 管理员的重要一步。
来源:wljslmz一点号