文章目录
- SysV init 简介
- SysV init 的缺点
- 运行级别
- 主要文件和目录的截图
SysV init 简介
System V init(缩写 SysV init)是类 Unix 操作系统中传统的也是首款初始化系统。
服务配置文件(bash 脚本文件)存放在目录 /etc/init.d 下 或者目录 /etc/rc.d/init.d/ 下,可以使用 /etc/rc.d/init.d/daemon [start|stop|restart|reload|status] 方式来管理服务。init 程序的配置文件存放在目录 /etc/inittab/ 下。
默认的运行级别在 /etc/inittab 文件中定义,当系统以某个运行级别启动时,会运行 /etc/rc.d/rcN.d/(其中 N 范围为0~6
)目录中所有的脚本,而这些脚本的命名都是Knnxxxxx或Snnxxxxx,其中S表示系统启动时调用,K表示系统终止时调用,nn是00~99的数字,数字的大小决定了脚本运行的顺序,最后的xxxxx为脚本的名称(长度任意),这些目录里的文件都是指向init.d目录中脚本的软连接,因为各个运行级别的所需的服务可能存在交集,所以这样能节省硬盘使用空间。
SysV init 守护进程是一个基于运行级别的系统,它使用运行级别(单用户、多用户以及其他更多级别)和链接(位于 /etc /rcN.d/ 目录中,分别链接到 /etc/init.d 中的 init 脚本)来启动和关闭系统服务。SysV启动是线性、顺序的。一个S20的服务必须要等待S19启动完成才能启动,如果一个启动要花很多时间,那么后面的服务就算完全无关,也必须要等。
在SysV init中,服务被分成两大类,一类是可独立运行的服务,另一类是受xinetd管理的服务,而xinetd本身是一个独立运行的服务,用来负责管理一些不常用的服务,当这些服务需要被使用时,由xinetd来唤醒它们,当服务使用完后,这些服务会被结束以减少系统资源的占用。
SysV init 的缺点
-
SysV 运行时是同步阻塞的
一个脚本运行的时候,后续脚本必须等待。这意味着所有的初始化步骤都是串行执行的,而实际上很多服务彼此并不相关,完全可以并行启动,从而减小系统的启动时间。 -
会启动大量无用的浪费系统资源的服务进程,无法完美满足按需启动服务的需求
-
启动脚本复杂。init 进程只是执行启动脚本,不管其他事情。脚本需要自己处理各种情况,这往往使得脚本变得很长
运行级别
在 SysV init 中,定义了6个运行级别,分别是:
runlevel0 = 关机
runlevel1 = 单用户模式,仅root
runlevel2 = 带网络的单用户模式
runlevel3 = 多用户模式,字符界面,标准模式
runlevel4 = 保留
runlevel5 = 多用户模式,图形界面,X11(X Window)
runlevel6 = 重启
主要文件和目录的截图
备注:截图来自 RHEL 7
/etc/inittab:
/etc/rc.d/:(rc.local是一个脚本文件,里面定义了用户自定义启动的程序)
/etc/rc.d/rc.local:
/etc/rc.d/init.d/:(文件functions定义了很多函数,供给本目录里的脚本调用,而文件README是一个说明文件,主要说明“现在的服务由systemd管理,不再推荐使用这些脚本”,剩下的文件都是对应服务的脚本文件)
/etc/rc.d/rc3.d/: