
Я добавил две службы A и B. B зависит от A, то есть если я запущу B, то A должна запуститься автоматически, если она еще не запущена. Но A не запускается автоматически, когда я запускаю B.
Можете ли вы сказать, где я не прав? Я упомянул скрипты 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 будут запущены в правильном порядке во время загрузки, но ручной запуск одного сценария инициализации не приведет к волшебному запуску другого (у него даже нет возможности узнать, запущен ли он уже).
Некоторая информация озагрузка на основе зависимостейв Дебиане.