Yanıtlar:
Birkaç seçeneğiniz var:
1) MySQL'i Upstart'a bir olay göndererek başladığını bildirmek
initctl emit mysql-started
" veya benzeri.
Bu, initctl
çağrının eklenmesiyle ele alınabilir /etc/init.d/mysql
.
2) mysql'i normal SysV çalışma seviyelerinden devre dışı bırakın ve başlatan bir sarıcı Upstart işi oluşturun (bu durmayı ele almaz - sadece bir örnek):
cat >>/etc/init/mysql-sysv.conf<<EOT
# wait for SysV job to finish
start on stopped rc
exec /etc/init.d/mysql start
EOT
Ardından, işiniz " start on started mysql-sysv
" olsun.
Buradaki sorun, birisi (veya bazı sistem araçları otomatik olarak) /etc/rc?.d
orijinal /etc/init.d/mysql
hizmet komut dosyasına bağlantıları yeniden eklerse sorun yaşamanızdır. Ayrıca, ana pid başladıktan bir süre sonra mysql aslında hazır olmadığını görebilirsiniz . Veritabanları, başladıktan sonra bile "çevrimiçi" duruma gelmeleri biraz zaman alabileceğinden (işlem günlüğü yeniden yürütme vb.) Sorunludur.
3) "Durdurulan rc'de başlat" (yani tüm SysV işlerinin bittiğini iddia ettiğinde başla) yapan bir sonradan başlatma işi ("garson") oluşturun ve sonra mysql'in hazır olmasını bekleyen anketler, sonra çıkar. İşinizi "durdu garson başlat".
4) MySQL'i bir Upstart işine dönüştürün (en iyi seçenek). Burada yeni bir başlangıç mysql yapılandırması için bir başlangıç noktası var: https://github.com/devo-ps/init-scripts/tree/master/mysql/ubuntu
os.system('/sbin/initctl emit consul-finished')
start on consul-finished
initctl emit cloud-init-finished
bir sysv hizmetini sed-replace zorunda sona erdi
Tüm start-up olmayan işler bittikten sonra uptart işinize başlamanızı öneririm :
start on started rc
/etc/init/rc.conf
sonradan olmayan işleri işten sonra başlatan şeydir.
Destekler: https://serverfault.com/a/533481
Kullanmaya ne dersiniz?
pre-start exec /etc/init.d/mysql start
uptart işinizin içinde!