在RHEL6.3上,我有一个系统服务,应该在postgresql和httpd之后启动(分别命令为64和85),但是chkconfig总是把它放在50位。我在CentOS 6.0虚拟机上尝试了一个实验来确保我明白LSB节语法。
我用这个文本创build了/etc/init.d/foo
,拥有者root权限755,
### BEGIN INIT INFO # Provides: foo # Required-Start: postgresql httpd # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Description: Foo init script ### END INIT INFO
然后运行chkconfig --add foo
。 结果: /etc/rc5.d/S86foo
按预期创build。 (其他的运行级别也如预期的那样)
我在RHEL机器上重复了同样的实验,而是创build了/etc/rc5.d/S50foo
。 我看不出两者之间会有不同的结果。 两台机器都有相同的命令和运行级别的postgresql和httpd。 有什么想法吗? 我只能使用# chkconfig: 2345 86 50
,或者手动重命名服务符号链接到正确的顺序,但我想为后来的用户logging一个安装过程,我想知道如何正确地做,并理解为什么它是不按预期工作。
在RH系统上,您必须使用chkconfig
行,如下所示:
https://fedoraproject.org/wiki/Packaging:SysVInitScript#.23_chkconfig:_line
关于chkconfig行:
SysV风格的initscript中的chkconfig:行用于确定默认启动服务的运行级别。 它也被用来设置“优先级”,或在运行级别内开始服务的顺序。 所有的Fedora SysV风格的启动脚本都必须有这一行。
关于LSB标题:
每个需要在任何运行级别默认启动的Fedora SysV样式的initscript都必须在LSB Header中包含这一行,并且它必须与在Chkconfig头文件中为启动定义的运行级别列表匹配 。