今天有一台服务器没有正常启动,原因是有一个服务没有启动起来,因为A服务需要B服务启动之后才能正常启动,所以需要调整AB服务的启动顺序。在网上查找了一些资料,总结了一下,以备以后需要。

    要知道服务的启动顺序,就需要先知道服务如何启动的。linux7个运行级别,用户可选择不同的运行级别。进入/etc/rc.d/目录,可查看到对应从rc0.drc6.d7个目录,这些目录即对应7个级别。

blob.png

进入rc3.d目录,可看到各种以K或者S开始的服务,K表示启动,S表示停止,而后面的数字就表示启动顺序。我们以熟悉的network服务为例,这里只是个链接,其实还是指向/etc/init.d/network,其启动值为10

blob.png

    在rc?.d中的都是链接文件,链接在/etc/init.d中的脚本。

blob.png

在脚本中,有#chkconfig 一行,这一行描述了当设置为自启动的时候,这个脚本的启动优先级和关闭的时候的关闭优先级。

       例如,我们看network脚本:


blob.png

我们可以看出,network脚本在被设置为自启动的时候,只在2345级里会自启动,启动优先级是10,关闭优先级是90。所以,如果要设置自己脚本自动启动,那么也需要有这一行。

blob.png

这是我的脚本,很简单,就是在脚本启动的时候查看network的状态,将结果写入tmp中的network.res文件中。

       在脚本中我设置的启动优先级是9,比network小,也就是说当我的脚本启动的时候,network还没有启动的。

       设置我的脚本自动启动:chkconfig --add test

       然后在/etc/rc.d/rc5.d中可以看到我脚本的链接。

blob.png

然后重启虚拟机,查看tmp下的文件内容,看network启动结果:

blob.png

       没有启动,达到目的。