Réponses:
Vous avez quelques options:
1) faire en sorte que mysql informe Upstart qu'il a commencé en émettant un événement
initctl emit mysql-started
" ou similaire.
Cela pourrait être géré en ajoutant l' initctl
invocation à /etc/init.d/mysql
.
2) Désactivez mysql à partir des niveaux d'exécution SysV normaux et créez un travail Upstart wrapper qui le démarre (pas cela ne gère pas l'arrêt - juste un exemple):
cat >>/etc/init/mysql-sysv.conf<<EOT
# wait for SysV job to finish
start on stopped rc
exec /etc/init.d/mysql start
EOT
Ensuite, faites votre travail " start on started mysql-sysv
".
Le problème ici est que vous rencontrerez des problèmes si quelqu'un (ou un outil système automatiquement) rajoute les /etc/rc?.d
liens au /etc/init.d/mysql
script de service d' origine . En outre, vous pouvez constater que mysql n'est réellement prêt que quelque temps après le démarrage de son pid principal. Les bases de données sont problématiques car elles peuvent mettre un certain temps à être "en ligne" même après leur démarrage (relecture du journal des transactions, etc.).
3) Créez un travail parvenu ("serveur") qui "démarre sur rc arrêté" (c'est-à-dire démarre lorsque tous les travaux SysV ont prétendu être terminés), puis interroge en attendant que mysql soit prêt, puis se termine. Demandez à votre travail de "démarrer sur un serveur arrêté".
4) Convertissez mysql en une tâche Upstart (la meilleure option). Il y a un point de départ pour une configuration mysql par ici: https://github.com/devo-ps/init-scripts/tree/master/mysql/ubuntu
os.system('/sbin/initctl emit consul-finished')
démarrage à partir d'un serveur de configuration via un script python qui s'exécute , puis démarrons d'autres services parstart on consul-finished
initctl emit cloud-init-finished
un service sysv pour pouvoir me connecter
Je suggère de commencer votre travail parvenu après que tous les travaux non parvenus soient terminés:
start on started rc
/etc/init/rc.conf
est la chose qui démarre les travaux non-upstart à partir de upstart.
Accessoires: /server//a/533481
Que diriez-vous d'utiliser
pre-start exec /etc/init.d/mysql start
à l'intérieur de votre emploi parvenu!