linux开机服务启动顺序详解

2017-01-13 19:20:20来源:CSDN作者:zyjiscainiao人点击

Linux系统中,系统服务的启动脚本一般放在/etc/rc.d/init.d目录下。不同的开机模式,则分别对应到/etc/rc.d/rc0-6.d目录下,rc0.d –rd6.d 这七个目录存放着linux在不同运行级别init.d下脚本的启停顺序,这几个目录下文件的命名形式为:K(S)+ number+service,这些文件分别连接到service对应脚本存在的目录,K表示kill,S表示start,number表示启停的顺序,service自然是脚本的名称了。这里简单介绍一下linux七个运行级别:


0 、停机
1 、单用户模式
2 、多用户无网络模式(很少使用)
3 、完整的多用户终端模式(无图形界面)
4 、保留
5 、多用户带GUI模式
6 、重启


一般来说我们将自己的编写的脚本放到init.d下时,还需要脚本的启动级别和启动顺序。
首先查询系统的运行级别:runlevel 
先后显示系统上一次和当前运行级别。如果不存在上一次运行级别,则用N表示。




然后通过chkconfig 命令来设置脚本的启动:
1、Chkconfig –add service
2、chkconfig –level (runlevel) service on   runlevel表示该命令获取的结果
一般通过上述的命令可以确定我们脚本的运行级别并在下一次重启的时候脚本启动,但是启动的顺序是系统确定的,我们并不能控制,然而在实际的生产环境中我们常常想要自己控制脚本的启动顺序或者想让自己的脚本在某个服务启动之后启动,这就需要在编写的脚本的时候添加一些设定。


下面是一个简单的脚本echo:
#!/bin/bash


echo "Hello,World"


如果需要设定运行级别和启动顺序可将其改写如下:


#!/bin/bash


# chkconfig: 2345 30 90
# description: echo info at boot time


### BEGIN INIT INFO
# Provides: echo
# Required-Start:
# Required-Stop:
# Should-Start:
# Should-Stop:
# Default-Start: run level
# Default-Stop:
# Short-Description:
# Description:
### END INIT INFO


echo "Hello,World"


后面这个脚本通过第一部分chkconfig和description确定了脚本的运行级别和启停顺序,2345表示在脚本在系统2345级别运行,016级别停止,启动顺序30,停止顺序90。
第二个部分从GEGIN INIT 开始到END INIT 结束,这个部分是根据Linux标准规范编写的,主要功能是限定脚本启停级别和依赖关系。Required-Start表示在启动该脚本前的必须条件
Should-Start表示启动脚本前应该具备某些条件,但不做硬性要求。Default-Start表示在那些运行级别启动,剩下的参数大多一眼就能看出具体含义,就不一一介绍了。
改完脚本后执行 chkconfig --add echo(脚本名)
完成上述步骤后脚本就能在系统启动时按照你的意愿来启动了,实际上添加的两个部分可以拆开单独用,第一部分不能控制依赖关系,第二部分不能控制启停顺序,而会根据依赖关系
将顺序设置为依赖条件的后面,这点很好理解。chkconfig  --add echo将脚本连接到各个级别的启动目录下。
总结:系统脚本的启动顺序一般在rcx.d下有记录,init的启动方式是线性的,所有待启动的脚本排好顺序,然后init顺序执行。现在系统服务使用systemd启动,建议多了解systemd,其功能更加丰富,操作
更灵活。

最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台