Answers:
除了像其他答案中建议的那样手动执行操作之外,您还可以更改init脚本。只需在标题中添加这样的行:
# chkconfig: 35 90 10
这将指示chkconfig
将服务添加到运行级别3和5,起始位置为90,终止位置为10。
chkconfig off servicename && chkconfig on servicename
您想阅读一些有关您的运行级别和rc.d目录的信息。在rc.d目录中,您可以找到S和K链接,例如S20apache K10apache,这基本上是命令脚本启动/关闭的命令。
在此体系结构上进行了一些更改,但是大多数Linux仍在使用它。
rcorder
已经存在了一段时间。
svc
,但可以不用xml的东西
如果您已经到达这里,则可能有两种服务,其中一种依赖另一种,但是由于它们以错误的顺序启动,因此具有依赖项的一种无法启动。就说明启动序列的运行方式而言,有关编辑符号链接的建议是有益的,并且可以正常工作,直到有人在您的服务上执行“ chkconfig on”为止,此时符号链接将按照最初的方式重新创建。确实,您想在init脚本级别处理该问题,无论如何,这样做实际上要麻烦得多。在不同的运行级别上也将保持一致。您可能不需要添加答案4中建议的“#chkconfig”行,因为那里可能已经存在类似的行。
我将以运行带有MySQL数据库后端(mysqld)的Openldap(slapd)的服务器为例。配置该对,以及为什么要这样做是另外一回事。
在启动时,Openldap无法启动,因为它依赖于MySQL,并且启动顺序已尝试在它之前启动-slapd的位置为27,mysqld的位置为64
/etc/rc3.d/中的相关符号链接是
S27slapd -> ../init.d/slapd
and
S64mysqld -> ../init.d/mysqld
我寻找在两个初始化脚本中设置的值:
[root ~]# grep chkconfig /etc/rc.d/init.d/mysqld
# chkconfig: - 64 36
[root ~]# grep chkconfig /etc/rc.d/init.d/slapd
# chkconfig: - 27 73
我在/etc/rc.d/init.d/slapd中编辑chkconfig行,使其开始位置高于/etc/rc.d/init.d/mysqld中的开始位置(我选择了85)
[root ~]# grep chkconfig /etc/rc.d/init.d/slapd
# chkconfig: - 85 73
我做“ chkconfig拍打”并重新检查符号链接
[root ~]# chkconfig slapd on
[root ~]# ls -l /etc/rc3.d/ | grep mysqld
lrwxrwxrwx 1 root root 16 Dec 10 13:45 S64mysqld -> ../init.d/mysqld
[root ~]# ls -l /etc/rc3.d/ | grep slapd
lrwxrwxrwx 1 root root 15 Apr 28 14:18 S85slapd -> ../init.d/slapd
现在,当该服务器启动时,mysqld在slapd之前启动,并且一切正常。