Respostas:
Você tem poucas opções:
1) faça o mysql informar ao Upstart que ele começou emitindo um evento
initctl emit mysql-started
" ou similar.
Isso pode ser tratado adicionando a initctl
chamada a /etc/init.d/mysql
.
2) Desative o mysql dos níveis de execução normais do SysV e crie um trabalho Upstart do wrapper que o inicia (não isso não lida com a parada - apenas um exemplo):
cat >>/etc/init/mysql-sysv.conf<<EOT
# wait for SysV job to finish
start on stopped rc
exec /etc/init.d/mysql start
EOT
Então, tenha seu trabalho " start on started mysql-sysv
".
O problema aqui é que você terá problemas se alguém (ou alguma ferramenta do sistema automaticamente) adicionar novamente os /etc/rc?.d
links ao /etc/init.d/mysql
script de serviço original . Além disso, você pode achar que o mysql não está realmente pronto até algum tempo após o início do pid principal. Os bancos de dados são problemáticos, pois podem levar algum tempo para ficarem "online", mesmo após o início (repetição do log de transações, etc.).
3) Crie um trabalho inicial ("garçom") que "inicie na parada rc" (ou seja, inicie quando todos os trabalhos do SysV alegarem ter terminado) e, em seguida, faça uma sondagem esperando que o mysql esteja pronto e saia. Faça seu trabalho "iniciar no garçom parado".
4) Converta o mysql em um trabalho Upstart (a melhor opção). Há um ponto de partida para uma configuração inicial do mysql aqui: https://github.com/devo-ps/init-scripts/tree/master/mysql/ubuntu
os.system('/sbin/initctl emit consul-finished')
, em seguida, iniciamos outros serviços porstart on consul-finished
initctl emit cloud-init-finished
um serviço sysv para ser capaz de ligar
Sugiro iniciar seu trabalho inicial após a conclusão de todos os trabalhos não iniciados :
start on started rc
/etc/init/rc.conf
é o que inicia trabalhos não iniciantes de dentro do iniciante.
Adereços: /server//a/533481
Que tal usar
pre-start exec /etc/init.d/mysql start
dentro do seu trabalho inicial!