Risposte:
Hai alcune opzioni:
1) fai in modo che mysql informi Upstart che è iniziato emettendo un evento
initctl emit mysql-started
" o simili.
Questo potrebbe essere gestito aggiungendo l' initctl
invocazione a /etc/init.d/mysql
.
2) Disabilitare mysql dai normali runlevel SysV e creare 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, fai il tuo lavoro " start on started mysql-sysv
".
Il problema qui è che potresti avere dei problemi se qualcuno (o alcuni strumenti di sistema automaticamente) aggiunge nuovamente i /etc/rc?.d
collegamenti allo /etc/init.d/mysql
script di servizio originale . Inoltre, potresti scoprire che mysql non è effettivamente pronto fino a qualche tempo dopo l'inizio del suo pid principale. I database sono problematici in quanto potrebbero richiedere del tempo per essere "online" anche dopo l'avvio (riproduzione del registro delle transizioni, ecc.).
3) Creare un processo di avvio ("cameriere") che "avvii su rc arrestato" (ovvero avviare quando tutti i lavori SysV hanno dichiarato di aver terminato) e quindi i sondaggi in attesa che mysql sia pronto, quindi esce. Fai in modo che il tuo lavoro "inizi a cameriere fermo".
4) Converti mysql in un lavoro Upstart (l'opzione migliore). C'è un punto di partenza per una configurazione mysql upstart qui: https://github.com/devo-ps/init-scripts/tree/master/mysql/ubuntu
os.system('/sbin/initctl emit consul-finished')
, quindi start on consul-finished
initctl emit cloud-init-finished
un servizio sysv per essere in grado di collegarmi
Suggerisco di iniziare il processo di avvio dopo aver terminato tutti i lavori non di avvio :
start on started rc
/etc/init/rc.conf
è la cosa che avvia i lavori non avviati dall'interno.
Props: /server//a/533481
Che ne dici di usare
pre-start exec /etc/init.d/mysql start
nel tuo lavoro iniziale!