У меня был тот же вопрос, и я также нашел другой ответ . Автор перечисляет 4 варианта для достижения этой цели, из которых мне больше всего нравится первый:
Используйте, initclt emit myservice-started
чтобы сообщить о завершении запуска вашей зависимой службы. В связанном ответе предлагается добавить эту строку в конец init.d
скрипта службы зависимостей , но я предпочитаю другой метод. Мне нравится создавать новый inid.d
скрипт с именем, myservice-started
который содержит только start
раздел. Используя соответствующий стиль комментирования в заголовке файла, я заявляю, что это зависит от $myservice
запуска. В start
разделе я расскажу выскочку о myservice
том, как начать. Вы можете установить его с помощью update-rc.d
.
Мне нравится это решение, потому что оно не навязчиво; если обновление изменяет какой-либо из существующих init.d
сценариев, это не повлияет на эти дополнительные сценарии. Но помните , что изменения в ваших новомодных скрипты будут необходимы.
Это может выглядеть так:
#!/bin/sh -e
### BEGIN INIT INFO
# Provides: myservice-started
# Required-Start: $myservice
# Default-Start: 2 3 4 5
# Short-Description: send upstart signal after starting myservice
# Description: myservice needs to run before some upstart services can run
### END INIT INFO
. /lib/lsb/init-functions
case "$1" in
start)
log_daemon_msg "Signaling myservice started..." "myservice-started"
initctl emit myservice-started --no-wait
;;
*)
log_action_msg "Usage: /etc/init.d/myservice-started start"
exit 1
;;
esac
exit 0
Ваш сценарий upstart, ожидающий myservice, может прослушать myservice-started
событие:
start on myservice-started