Suse服务启动顺序简析

来源:岁月联盟 编辑:exp 时间:2012-06-18
 Suse 服务启动顺序的问题,终于把我给刺激了,不得不认真的看一下,以前使用Redhat时候,是用chkconfig进行启动脚本的顺序调整的。例如,# chkconfig: 35 98 01这表明,我想让这个服务在runlever 3 和5的时候启用,其他情况禁用。启用时的启动顺序是98,这个已经很靠后了,停止顺序是01,这个相当靠前哦。然而,在SLES中,一切都变了,这种指定方式不再好用,(注意哦,不是不能用,是有限制)。SUSE引入了新的启动顺序配置方式,我管它叫做before/after方式,使用的相关命令是insserv。配置方式是在脚本中加入一些注释,没错,就像这样:  www.2cto.com  ### 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的处理方式还是满不赖的么,不用纠结于给脚本设定多大的启动顺序数字。而且,还能自动写入依赖关系,自动创建相应的启动脚本,(其实只是给定了启动顺序数字,和创建了一个到启动脚本的链接)。  www.2cto.com  据说SUSE对启动脚本的这种处理方式,符合一种叫做LSB的标准。有兴趣的朋友可以点这里http://www.ibm.com/developerworks/cn/linux/l-lsb-intr/index.html或者这里http://www.linuxbase.org/围观。 那么,在SUSE中使用chkconfig配置启动脚本有何限制呢, 它只能单纯的解决在 /etc/init.d/ 下的脚本的自动启动的问题,而不能定义各个脚本之间启动停止的依赖性。当然也不会创建依赖关系。那么,在Redhat中能够使用SUSE中这么帅的配置方式么,如果装了LSB相关包的话,似乎是可以的。  作者 jackyyen