Respuestas:
Tienes pocas opciones:
1) haz que mysql informe a Upstart que ha comenzado emitiendo un evento
initctl emit mysql-started
" o similar.
Esto podría manejarse agregando la initctl
invocación a /etc/init.d/mysql
.
2) Desactive mysql de los niveles de ejecución normales de SysV y cree un trabajo de reinicio de reinicio que lo inicie (no esto no maneja la detención, solo un ejemplo):
cat >>/etc/init/mysql-sysv.conf<<EOT
# wait for SysV job to finish
start on stopped rc
exec /etc/init.d/mysql start
EOT
Entonces, ten tu trabajo " start on started mysql-sysv
".
El problema aquí es que tendrá problemas si alguien (o alguna herramienta del sistema automáticamente) vuelve a agregar los /etc/rc?.d
enlaces al /etc/init.d/mysql
script de servicio original . Además, es posible que mysql no esté realmente listo hasta un tiempo después de que su pid principal haya comenzado. Las bases de datos son problemáticas, ya que pueden demorar un tiempo en "conectarse" incluso después de haber comenzado (reproducción del registro de transición, etc.).
3) Cree un trabajo inicial ("camarero") que "comience en el rc detenido" (es decir, comience cuando todos los trabajos de SysV hayan afirmado haber finalizado) y luego realice las encuestas esperando que mysql esté listo y luego salga. Haga que su trabajo "comience con el mesero parado".
4) Convierta mysql en un trabajo Upstart (la mejor opción). Hay un punto de partida para una configuración mysql advenedizo aquí: https://github.com/devo-ps/init-scripts/tree/master/mysql/ubuntu
os.system('/sbin/initctl emit consul-finished')
inicio desde un servidor de configuración a través de un script de Python que se ejecuta , luego start on consul-finished
initctl emit cloud-init-finished
un servicio sysv para poder conectarme
Le sugiero que comience su trabajo inicial después de que todos los trabajos no iniciales hayan terminado:
start on started rc
/etc/init/rc.conf
es lo que inicia los trabajos que no se inician desde arriba.
Atrezzo: /server//a/533481
¿Qué hay de usar
pre-start exec /etc/init.d/mysql start
dentro de tu trabajo advenedizo!