Sur Ubuntu 10.04, je dois démarrer mon service avec upstart, mais uniquement lorsque mysql est opérationnel.
Le problème est que mysql lui-même n'est pas géré par upstart, donc je ne peux pas utiliser la fonction "start on".
Que puis-je faire ?
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 connecterJe suggère de commencer votre travail parvenu après que tous les travaux non parvenus soient terminés:
/etc/init/rc.conf
est la chose qui démarre les travaux non-upstart à partir de upstart.Accessoires: /server//a/533481
la source
Que diriez-vous d'utiliser
à l'intérieur de votre emploi parvenu!
la source