chkconfig 以错误的顺序创建服务符号链接

chkconfig 以错误的顺序创建服务符号链接

在 RHEL 6.3 上,我有一个系统服务应该在 postgresql 和 httpd(分别为顺序 64 和 85)之后启动,但 chkconfig 总是将其放在顺序 50 处。我在 CentOS 6.0 虚拟机上进行了实验,以确保我理解了 LSB 节语法。

我创建了/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按预期创建。(其他运行级别也符合预期。)

我在 RHEL 机器上重复了完全相同的实验,但它创建了/etc/rc5.d/S50foo。我看不出两者之间有什么不同会导致不同的结果。两台机器的 postgresql 和 httpd 都以相同的顺序和运行级别启动。有什么想法吗?我可以使用# chkconfig: 2345 86 50,或手动将服务符号链接重命名为正确的顺序,但我正在尝试为以后的用户记录安装过程,我想知道如何正确执行并了解为什么它没有按预期工作。

答案1

在 RH 系统上,您必须使用chkconfig如下行:

https://fedoraproject.org/wiki/Packaging:SysVInitScript#.23_chkconfig:_line

关于 chkconfig 行:

SysV 样式的启动脚本中的 chkconfig: 行用于确定服务应默认启动的运行级别。它还用于设置“优先级”,即服务在运行级别内启动的顺序。所有 Fedora SysV 样式的启动脚本一定有这一行。

关于LSB标头:

每个需要在任何运行级别默认启动的 Fedora SysV 风格的启动脚本都必须在 LSB Header 中包含此行,并且它必须匹配为启动定义的运行级别列表Chkconfig 标头。

相关内容