当前位置:首页 > 技术文章 > 正文内容

全面解析 Linux 中的运行级别,从 SysV init 到 systemd

douba31个月前 (07-28)技术文章8

运行级别是 Linux 系统处于某种状态或模式的标志。它决定了哪些服务应该启动或停止。每个运行级别对应一个特定的系统状态,如单用户模式、图形界面、关机等。

在传统的 SysV init 系统中,运行级别由数字表示(0 到 6)。而在 modern Linux 发行版(如 CentOS 7+/Debian 8+/Ubuntu 16.04+)中,systemd 接管了 init 系统,运行级别由“目标(Target)”来取代,但本质上仍可对应传统级别。

传统 SysV Init 运行级别

SysV init 使用 /etc/inittab 配置文件指定默认运行级别,通过启动对应目录下的脚本来启动或停止服务。

各运行级别的含义如下:

运行级别

状态描述

0

停机(关机)

1

单用户模式(维护/恢复)

2

多用户模式(无网络)

3

多用户模式(带网络,命令行)

4

自定义(一般未使用)

5

多用户模式(带图形界面)

6

重启系统

注意:运行级别 0 和 6 不应作为默认运行级别,否则系统会陷入关机或重启循环。

查看当前运行级别

runlevel

输出示例:

N 3

含义:当前运行级别为 3,“N” 表示无法检测上一个运行级别(如系统刚启动)。

切换运行级别

init 5       # 切换到图形界面
init 3       # 切换到命令行模式

或使用:

telinit 1    # 切换到单用户模式

设置默认运行级别

编辑 /etc/inittab

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 机制

随着 systemd 的引入,传统的运行级别机制被更灵活的 Target 所取代。虽然 runlevel 命令仍然可用,但它已成为对 systemd 的兼容层。

常见 Target 对应关系

SysV 级别

systemd Target

0

poweroff.target

1

rescue.target

3

multi-user.target

5

graphical.target

6

reboot.target

查看当前运行级别(Target)

systemctl get-default

或使用:

systemctl list-units --type=target

设置默认启动 Target

sudo systemctl set-default multi-user.target

临时切换 Target(不会影响下次启动)

sudo systemctl isolate graphical.target

启动/停止服务对应 Target

查看某个 Target 包含的服务:

systemctl list-dependencies multi-user.target

创建自定义运行级别(Target)

  1. 创建一个自定义 target 文件:
sudo cp /usr/lib/systemd/system/multi-user.target /etc/systemd/system/my-custom.target
  1. 修改内容或添加依赖服务:
[Unit]
Description=My Custom Runlevel
Requires=network.target sshd.service
After=network.target
  1. 重新加载配置:
sudo systemctl daemon-reexec
sudo systemctl set-default my-custom.target

System V vs systemd

特性对比

SysV init

systemd

启动方式

顺序执行启动脚本

并行启动,提高速度

运行级别

数字(0-6)

target(如 multi-user.target)

服务管理

service 命令

systemctl 命令

脚本路径

/etc/init.d/

/usr/lib/systemd/system/ 等

兼容性

旧系统使用

新系统主流,兼容传统方式

运行级别不仅是历史遗产,它们仍然以“目标”的形式深深嵌入 modern Linux 系统之中。无论你管理的是经典的 CentOS 6,还是现代的 Ubuntu 20.04,理解运行级别及其现代替代机制 Target,都是迈向资深 Linux 管理员的重要一步。

相关文章

推荐使用集串口 SSH远程登录和FTP传输三合一工具MobaXterm

来源:百问网作者:韦东山本文字数:1216,阅读时长:4分钟在以前的资料里,串口和SSH远程登使用SecureCRT,window与ubuntu数据传输使用filezilla,窗口切换来切换去,麻烦也...

Linux系统如何查看服务的运行状态

请关注本头条号,每天坚持更新原创干货技术文章。如需学习视频,请在微信搜索公众号“智传网优”直接开始自助视频学习1. 前言本文主要讲解如何在Linux系统上查看服务的运行状态。Linux系统提供各种系统...

如何在Linux中查询 DNS 记录,这三个命令可谓是最常用、最经典的

在进入正题之前,先聊聊为什么我们需要检查 DNS 记录。DNS 是互联网的基石,它负责把域名解析成 IP 地址,确保你的浏览器能找到目标服务器。如果 DNS 出问题,可能导致网站打不开、邮件发不出去,...

05、Linux查看服务的进程-没有自己的Linux服务器网页端练习

大家好,我是Bigder~今天依然是网页端学习01、Linux怎么判断当前登陆用户(网页端学习linux),登录网页端练习。1、今天练习一个指令、查看服务的进程是否存在2、使用「ps -ef |gre...

Linux环境中FTP服务的安装与配置(linux服务器安装ftp命令)

简介:FTP ( 文件传输协议 ) 是 互联网常用的网络协议之一 , 它为系统提供了通过网络与远程服务器进行文件传输的简单方法,多个Web站点可以共享一个IP地址。Linux下ftp服务可以通过搭建v...

linux入门系列15--文件传输之vsftp服务

前面的系列文章基本讲完了linux管理相关的基础知识,从本篇开始讲解centos7中服务程序的部署和配置,以便为外部提供各种服务。日常工作和娱乐中,我们所需的各种资源都离不开网络以及各种服务,我们通过...