Chr*_*ian 22
您还可以更改 init 脚本,而不是像其他答案中建议的那样手动执行此操作。只需在标题中添加这样一行:
# chkconfig: 35 90 10
Run Code Online (Sandbox Code Playgroud)
这将指示chkconfig将服务添加到运行级别 3 和 5,起始位置为 90,终止位置为 10。
rag*_*ags 11
您可以通过重命名 /etc/rcX.d/ 下的符号链接来更改顺序,其中 x 将是您的运行级别。
您会看到一堆以 Sxx 或 Kxx 开头的文件。S 链接在启动过程中被跟踪,而 K 链接在关闭时被解析。这里的 xx 代表顺序。
但是这个顺序是有原因的,所以在改变它们时要小心。例如。ntpd 应仅在网络子系统初始化后启动。
您想了解一些有关运行级别和 rc.d 目录的信息。在 rc.d 目录中,您可以找到 S 和 K 链接,例如 S20apache K10apache,这基本上是命令启动/关闭脚本的内容。
这个架构有一些变化,但大多数 linux 仍在使用它。
小智 7
如果您已经到了这里,很可能您有两个服务,其中一个依赖于另一个,但是由于它们以错误的顺序启动,具有依赖关系的服务无法启动。关于编辑符号链接的建议在说明启动序列如何运行方面具有丰富的信息,并且可以正常工作,直到有人在您的服务上执行“chkconfig on”,此时符号链接将按原样重新创建。真的,您想在 init 脚本级别处理这个问题,无论如何,这实际上要少得多。它也将在不同的运行级别中保持一致。您可能不需要按照答案 4 中的建议添加“#chkconfig”行,因为那里可能已经有类似的行了。
我将使用运行 Openldap (slapd) 和 MySQL 数据库后端 (mysqld) 的服务器示例。配置那对,以及你可能想要的原因,是另一回事。
启动时,Openldap 无法启动,因为它依赖于 MySQL 并且启动顺序让它在它之前尝试启动 - slapd 的位置为 27,而 mysqld 的位置为 64
/etc/rc3.d/ 中的相关符号链接是
S27slapd -> ../init.d/slapd
and
S64mysqld -> ../init.d/mysqld
Run Code Online (Sandbox Code Playgroud)
我寻找在两个 init 脚本中设置的值:
[root ~]# grep chkconfig /etc/rc.d/init.d/mysqld
# chkconfig: - 64 36
[root ~]# grep chkconfig /etc/rc.d/init.d/slapd
# chkconfig: - 27 73
Run Code Online (Sandbox Code Playgroud)
我编辑 /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
Run Code Online (Sandbox Code Playgroud)
我执行“chkconfig slapd on”并重新检查符号链接
[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
Run Code Online (Sandbox Code Playgroud)
现在,当这个服务器启动时,mysqld 在 slapd 之前启动,一切正常。
| 归档时间: |
|
| 查看次数: |
71134 次 |
| 最近记录: |