背景
在研究 linux 系统自启动项的时候,发现/etc/rc[x].d 目录下有文件(这里的 x代表系统运行级别),根据不同的系统运行级别开机自启动不同的服务。这里不讨论/etc/rc.local 文件(该文件写入的命令会在所有其他服务运行后运行,不存在系统运行级别的问题)
一、知识点
在传统的 Linux 系统中,运行级别(Runlevel)定义了系统启动后的状态和可用服务。运行级别的概念主要用于 SysVinit 初始化系统,而在使用 systemd 的现代 Linux 发行版中,运行级别被目标(Target)所替代,但运行级别的概念依然可以帮助理解系统状态。以下是典型的 Linux 运行级别的列表和各自的特点:
- 运行级别 0:
○ 特点: 关机模式。
○ 功能: 当系统需要关闭时,会切换到此运行级别。
- 运行级别 1:
○ 特点: 单用户模式。
○ 功能: 只允许root用户登录,并且只启动最基本的系统服务。用于系统维护,例如修复文件系统错误。
- 运行级别 2:
○ 特点: 多用户模式,无网络支持。
○ 功能: 启动必要的系统服务,但不启动网络服务。这个级别很少使用,因为现代系统几乎总是需要网络。
- 运行级别 3:【默认级别】
○ 特点: 完全多用户模式,文本界面。
○ 功能: 启动所有必要的服务,包括网络服务。用户可以在控制台登录并使用系统。
- 运行级别 4:【不常用】
○ 特点: 未定义,由发行版自行决定。
○ 功能: 这个级别通常不使用,可以被发行版用于特殊目的。
- 运行级别 5:【和 3 一样默认级别】
○ 特点: 完全多用户模式,图形界面。
○ 功能: 启动所有必要的服务和图形环境,如 X Window 或 Wayland。用户可以通过图形界面登录并使用系统。
- 运行级别 6:
○ 特点: 重启模式。
○ 功能: 系统会重启,类似于运行级别 0 的关机操作,但最终会重新启动系统。
在使用 systemd 的系统中,运行级别的概念被替换为“目标(Targets)”。例如,“multi-user.target”对应于运行级别 3 和 5,提供一个多用户环境;而“graphical.target”则对应于运行级别 5,提供一个多用户图形环境。需要注意的是,不同的 Linux 发行版可能会有不同的默认运行级别或目标。例如,一些发行版默认使用图形界面,而另一些则默认使用文本界面。
二、如何查看系统运行等级
- 使用 runlevel 命令:
○ 运行 runlevel 命令会显示当前运行级别以及前一个运行级别。输出通常格式为 N 5,其中 N 表示上一个运行级别,5 表示当前运行级别。
- 使用 who -r 命令:
○ 这个命令不仅显示当前运行级别,还会显示系统重启时间等信息。
- 查看 /run/ 目录下的 systemd/system.conf 文件:
○ 在使用systemd的系统中,可以查看systemd的配置文件以了解默认的运行目标(target),这在某种程度上相当于运行级别。
§ cat /run/systemd/system.conf | grep DefaultTarget
○ 或者使用 systemctl 命令:
§ systemctl get-default
对于传统的SysVinit系统(如CentOS 6),上述第一种和第二种方法仍然适用。但在使用systemd的系统(如CentOS 7及以上版本)中,运行级别概念被替换成了“目标(targets)”。例如,“multi-user.target”相当于SysVinit中的运行级别3或5。
如果不确定系统使用的是哪种初始化系统,可以尝试上述所有方法,或者检查 /proc/1/comm 文件,它会告诉你第一个进程(通常是init或systemd)的名称:
○ cat /proc/1/comm
§ 如果输出是 systemd,那么你的系统使用的是systemd初始化系统
§ 如果是 init,则可能使用的是SysVinit或其他初始化系统。
三、自启动文件
如果系统是 sysVinit 启动的,那么除了/etc/rc.local 文件之外,检测/etc/rc.d/rc.d/也是系统的启动文件,只是这时候对应哪一个文件生效,取决于当前系统的 runlevel 是多少。如果当前的 runlevel 是 3,那么对应的/etc/rc.d/rc3.d/下的文件就是当前系统下的自启动配置文件
/etc/rc.d/下的目录说明
init.d 目录,里面是系统自带的启动程序
rc0.d 系统运行级别为 0 时系统自启程序目录
rc1.d 系统运行级别为 1 时系统自启程序目录
rc2.d 系统运行级别为 2 时系统自启程序目录
rc3.d 系统运行级别为 3 时系统自启程序目录
rc4.d 系统运行级别为 4 时系统自启程序目录
rc5.d 系统运行级别为 5 时系统自启程序目录
rc6.d 系统运行级别为 6 时系统自启程序目录
rc.local 文件,可以让用户定义的自启动程序
久违 2024.08.13