阅读更多
SUSE 服务启动顺序的问题,终于把我给刺激了,不得不认真的看一下,以前使用RedHat时候,是用chkconfig进行启动脚本的顺序调整的。例如,
# chkconfig: 35 98 01
这表明,我想让这个服务在runlever 3 和5的时候启用,其他情况禁用。启用时的启动顺序是98,这个已经很靠后了,停止顺序是01,这个相当靠前哦。
然而,在SLES中,一切都变了,这种指定方式不再好用,(注意哦,不是不能用,是有限制)。SUSE引入了新的启动顺序配置方式,我管它叫做before/after方式,使用的相关命令是insserv。配置方式是在脚本中加入一些注释,没错,就像这样:
### BEGIN INIT INFO
# Provides: Tomcat
# Required-Start: $network Oracle-xe
# Required-Stop: $network
# Default-Start: 2 3 5
# Default-Stop: 0 1 2 6
# Description: Start Tomcat server
### END INIT INFO
解释在这里,
Provides: 指明这个 init 脚本控制的程序或者服务的名字。
Required-Start:指明需要在自身服务启动之前先启动的服务名称。
Required-Stop: 指明需要在自身服务停止之前先停止的服务名。
Default-Start:指明服务自动启动的 runlevel 级别。
Default-Stop:指明服务自动停止的 runlevel 级别。
Description:服务的说明。
然后要做的是,运行命令 insserv。insserv 命令会检查这部分脚本内容,对应 Default-Start 和 Default-Stop 定义,在相应的 runlevel(/etc/init.d/rc?.d/) 目录下创建到 /etc/init.d/ 目录下脚本的启动,停止链接。insserv 还会把服务之间的启动和停止依赖性一起写入文件 .depend.start file 和 .depend.stop。
天啊,看上去,SUSE的处理方式还是满不赖的么,不用纠结于给脚本设定多大的启动顺序数字。而且,还能自动写入依赖关系,自动创建相应的启动脚本,(其实只是给定了启动顺序数字,和创建了一个到启动脚本的链接)。
据说SUSE对启动脚本的这种处理方式,符合一种叫做LSB的标准。有兴趣的朋友可以点这里或者这里围观www.linuxidc.com。
那么,在SUSE中使用chkconfig配置启动脚本有何限制呢,
它只能单纯的解决在 /etc/init.d/ 下的脚本的自动启动的问题,而不能定义各个脚本之间启动停止的依赖性。当然也不会创建依赖关系。
那么,在Redhat中能够使用SUSE中这么帅的配置方式么,
如果装了LSB相关包的话,似乎是可以的。