1、Linux开机顺序
借用网上的一张开机顺序图片,明了的展示开机启动顺序
2、Linux的运行级别
运行级别:不同级别下启动的服务不同,判定级别不同。
0-6:7个级别。
0:表示halt,关机
1:单用户模式 single user mode,直接登陆管理员,无需密码。
2:多用户模式,multi user mode,no nfs。不启用nfs。
3: 正常多用户模式, multi user mode ,text mode,文本模式。
4:reserved,保留级别,此前尚未定义使用。
5:正常多用户模式,multi user mode,graphic mode,图形模式。
6:表示reboot,重启。
默认级别,由inittab文件来控制。inittab中定义了默认运行级别,它是内核加载完成后运行init多 要读取的第一个配置文件。
这7个运行级别,默认对应着Linux目录结构中/etc/rc.d/下的7个rc#.d
Linux的启动全在这里,配合上面的开机流程顺序,结构一目了然。
3、Linux运行级别的切换机制。
在每个rc#.d目录下,都有分别以K开头和以S开头的脚本文件。
以K开头的文件意义为,当运行等级转换成该等级后,将会kill掉这些服务,也就是服务名stop。相应的,以S开头的脚本则是转换成该等级后,将会启动的脚本。
以上动作的执行者为/etc/rc.d/下的rc脚本,透过这个脚本可以看出linux运行等级转换机制以及动作执行顺序。
在等级切换之后,首先执行kill脚本,将rc#.d目录下以K开头的服务关闭。K或者S后面都会跟一个数字,在执行for i in /etc/rc$runlevel.d/K*这个循环时,脚本将会以K后面的数字从小到大进行排列,那么关闭也就是按照这个数字从小到大顺序进行的,同理,Start脚本也是如此。
由此说来,为什么init0是关机,init6是重启呢?对比一下rc0.d和rc6.d就明了。
他们虽然调用的同一个脚本,但是因为调用时脚本名称不同,所以根据下面/etc/rc.d/init.d/halt脚本的内容可以知道,这是两个不同的动作。
4、与runleve相关的常用命令
runlevel:查看当前系统的运行等级。
who -r:查看当前系统的运行等级。
init #:切换运行等级。