Eu tinha a mesma pergunta e também encontrei uma resposta diferente . O autor lista 4 opções para fazer isso, das quais eu gosto mais da primeira:
Use initclt emit myservice-started
para sinalizar a conclusão da inicialização do seu serviço dependente. Na resposta vinculada, sugere-se adicionar essa linha ao final do init.d
script do serviço de dependência , mas eu prefiro um método diferente. Eu gosto de criar um novo inid.d
script chamado myservice-started
que contém apenas uma start
seção. Usando o estilo de comentário apropriado no cabeçalho do arquivo, declaro que ele depende $myservice
para ser iniciado. Na start
seção, eu falo sobre myservice
como começar. Você pode instalá-lo com update-rc.d
.
Eu gosto desta solução porque não é intrusiva; se uma atualização alterar qualquer um dos init.d
scripts existentes , não afetará esses scripts adicionais. Mas lembre-se de que são necessárias alterações nos scripts iniciais .
Pode ser assim:
#!/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
Seu script inicial que está aguardando o myservice pode ouvir o myservice-started
evento:
start on myservice-started