Hai alcune opzioni:
1) fare in modo che mysql informi Upstart che è stato avviato emettendo un evento
initctl emit mysql-started
" o simile.
Questo potrebbe essere gestito aggiungendo il initctl
invocazione a /etc/init.d/mysql
.
2) Disabilita mysql dai normali runlevel SysV e crea un processo Upstart wrapper che lo avvii (non questo non gestisce l'arresto - solo un esempio):
cat >>/etc/init/mysql-sysv.conf<<EOT
# wait for SysV job to finish
start on stopped rc
exec /etc/init.d/mysql start
EOT
Quindi, ottieni il tuo lavoro "start on started mysql-sysv
".
Il problema qui è che ti imbatterai in problemi se qualcuno (o qualche strumento di sistema automaticamente) aggiunge nuovamente il /etc/rc?.d
collega al /etc/init.d/mysql
originale script di servizio. Inoltre, potresti scoprire che mysql non è effettivamente pronto fino a qualche tempo dopo è iniziato il pid principale. I database sono problematici in quanto potrebbero richiedere del tempo per essere "online" anche dopo che sono stati avviati (riproduzione del registro delle transazioni, ecc.).
3) Creare un lavoro upstart ("cameriere") che "inizia su rc interrotto" (ovvero inizia quando tutti i lavori SysV hanno affermato di essere terminati) e quindi esegue il polling in attesa che mysql sia pronto, quindi esce. Fai in modo che il tuo lavoro "inizia con il cameriere fermo".
4) Converti mysql in un lavoro Upstart (l'opzione migliore). C'è un punto di partenza per una nuova configurazione di mysql quassù:https://github.com/devo-ps/init-scripts/tree/master/mysql/ubuntu