我添加了两个服务 A 和 B。B 依赖于 A,这意味着如果我启动 B,那么如果 A 尚未运行,则它应该自动启动。但是当我启动 B 时,A 不会自动启动。
你能告诉我哪里错了吗?我在下面提到了两种服务的 Init 脚本。
我不想使用 upstart 和 systemd。我想使用 init 脚本 (LSB) 来实现这一点。
B 初始化脚本:
#!/bin/bash
# Author: xxxx [email protected]
# chkconfig: 2345 95 05
# processname: B
# config: /usr/local/etc/rc.conf
# pidfile: /var/run/B.pid
### BEGIN INIT INFO
# Provides: B
# Required-Start: $local_fs $network A
# Required-Stop: $local_fs $network A
# Should-Start:
# Should-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: start and stop System daemon
# Description:
### END INIT INFO
初始化脚本:
#!/bin/bash
# Author: xxxx [email protected]
# chkconfig: 2345 90 10
# processname: A
# config: /usr/local/etc/rc.conf
# pidfile: /var/run/A.pid
### BEGIN INIT INFO
# Provides: A
# Required-Start: $local_fs $network
# Required-Stop: $local_fs $network
# Should-Start:
# Should-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: start and stop System daemon
# Description:
### END INIT INFO
答案1
LSB 初始化脚本无法做到这一点。它们本身不遵守任何依赖关系。
该INIT INFO
注释部分仅适用于基于依赖关系的启动,其中依赖关系由外部脚本解析并用于在启动期间启动单独的 init.d 脚本。
因此,在您当前的配置中,服务 A 和 B 将在启动期间按正确的顺序启动,但手动启动一个初始化脚本不会神奇地启动另一个(它甚至没有任何方法知道它是否已经在运行)。
一些信息基于依赖性的引导在 Debian 中。