Jawaban:
Anda punya beberapa pilihan:
1) membuat mysql memberi tahu Upstart bahwa itu telah dimulai dengan memancarkan suatu peristiwa
initctl emit mysql-started
"atau serupa.
Ini dapat ditangani dengan menambahkan initctl
doa ke /etc/init.d/mysql
.
2) Nonaktifkan mysql dari runlevel SysV normal dan buat wrapper Upstart job yang memulai (bukankah ini tidak menangani penghentian - hanya sebuah contoh):
cat >>/etc/init/mysql-sysv.conf<<EOT
# wait for SysV job to finish
start on stopped rc
exec /etc/init.d/mysql start
EOT
Lalu, dapatkan pekerjaan Anda " start on started mysql-sysv
".
Masalahnya di sini adalah Anda akan mengalami masalah jika seseorang (atau beberapa alat sistem secara otomatis) menambahkan kembali /etc/rc?.d
tautan ke /etc/init.d/mysql
skrip layanan asli . Juga, Anda mungkin menemukan bahwa mysql sebenarnya tidak siap sampai beberapa saat setelah pid utama dimulai. Database bermasalah karena mereka mungkin membutuhkan waktu untuk datang "online" bahkan setelah mereka mulai (transction log replay, dll).
3) Buat pekerjaan pemula ("pelayan") yang tidak "mulai pada berhenti rc" (yaitu mulai ketika semua pekerjaan SysV telah diklaim selesai) dan kemudian jajak pendapat menunggu mysql menjadi siap, kemudian keluar. Apakah pekerjaan Anda "mulai pelayan berhenti".
4) Konversi mysql ke pekerjaan pemula (opsi terbaik). Ada titik awal untuk konfigurasi mysql pemula di sini: https://github.com/devo-ps/init-scripts/tree/master/mysql/ubuntu
os.system('/sbin/initctl emit consul-finished')
, kemudian memulai layanan lain olehstart on consul-finished
initctl emit cloud-init-finished
layanan sysv agar dapat terhubung
Saya sarankan memulai pekerjaan pemula Anda setelah semua pekerjaan non-pemula selesai:
start on started rc
/etc/init/rc.conf
adalah hal yang memulai pekerjaan non-pemula dari dalam pemula.
Alat Peraga: /server//a/533481
Bagaimana kalau menggunakan
pre-start exec /etc/init.d/mysql start
di dalam pekerjaan pemula Anda!