Vous avez plusieurs options :
1) faire en sorte que mysql informe Upstart qu'il a démarré en émettant un événement
initctl emit mysql-started
" ou similaire.
Cela pourrait être géré en ajoutant le initctl
appel à /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 (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 le /etc/rc?.d
liens vers le /etc/init.d/mysql
d'origine script de service. De plus, vous pouvez constater que mysql n'est réellement prêt qu'un certain temps après son pid principal a démarré. Les bases de données sont problématiques car elles peuvent prendre un certain temps pour être "en ligne" même après leur démarrage (relecture du journal des transactions, etc.).
3) Créez une tâche de démarrage ("serveur") qui "démarre sur rc arrêté" (c'est-à-dire démarre lorsque toutes les tâches SysV ont prétendu être terminées), puis interroge en attendant que mysql soit prêt, puis se termine. Faites en sorte que votre travail "commence sur un serveur arrêté".
4) Convertissez mysql en un travail Upstart (la meilleure option). Il y a un point de départ pour une configuration mysql parvenue ici :https://github.com/devo-ps/init-scripts/tree/master/mysql/ubuntu