Bagaimana cara bergantung pada pekerjaan pemula dari skrip init di Ubuntu 12.04

10

Saya menggunakan Ubuntu 12,04 LTS dan sistem ini terutama menggunakan pekerjaan pemula. Sayangnya sistem saya juga tergantung pada server dbmail yang dikompilasi secara manual , yang hanya memiliki skrip init, tetapi tidak ada skrip pemula.

Menggunakan update-rc.d dbmail defaultssaya menginstal dbmail untuk semua runlevel, tetapi sayangnya itu dimulai sebelum MySQL, sehingga daemon mati lagi. Saya juga mencoba memindahkannya ke S90 atau sejenisnya, masih MySQL tidak tersedia ketika skrip dijalankan.

Saya mencoba menambahkan ketergantungan pada header skrip LSB, sebagai berikut:

#!/bin/sh
### BEGIN INIT INFO
# Provides:          dbmail
# Required-Start:    $local_fs $remote_fs $syslog $network mysql
# Required-Stop:     $local_fs $remote_fs $syslog $network
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start dbmail services
# Description:       Run network services provided by dbmail such as
#                    imap-server, pop3-server, lmtp-server, timsieve-server
### END INIT INFO

Sayangnya skrip ini tampaknya masih dimulai sebelum MySQL. Saya sudah terbiasa dengan skrip init lama, bukan untuk memulai pekerjaan, jadi saya sedikit bingung di sini. Bagaimana saya bisa menambahkan ketergantungan atau bagaimana saya bisa mendapatkan mysqlpekerjaan untuk memulai sebelum dbmailskrip init?

Bagaimana saya bisa memeriksa / melihat perintah mulai diambil untuk skrip pekerjaan + init saat boot? Apakah ada alat untuk ini?

Meluncurkan skrip secara manual dari shell setelah startup berfungsi dengan baik, karena MySQL sudah berjalan saat itu.

Martin C.
sumber
Apa yang bekerja sebagai work-around jelek adalah menambahkan "sleep 3" dalam fungsi "start ()" dari skrip init. Tetapi harus ada cara yang lebih bersih, ini hanya menyalahgunakan kondisi ras dan saya benar-benar ingin memperbaikinya dengan cara yang tepat.
Martin C.

Jawaban:

12

Saya pikir jika Anda lari /etc/init.d/dbmail startdari /etc/rc.local, itu akan mulai setelah semua pekerjaan pemula Anda / skrip init lainnya.

Namun, saya mungkin akan memperbaikinya dengan menambahkan pekerjaan baru di /etc/init/dbmail.conf. Biasanya skrip init.d memiliki banyak kode untuk memeriksa status, dll., Yang baru ditangani oleh Anda. Mungkin sesederhana:

start on started mysql
exec /usr/local/bin/dbmail

Atau, Anda mungkin dapat menggunakan skrip init yang ada seperti ini:

start on started mysql
pre-start script
  /etc/init.d/dbmail start
end script
post-stop script
  /etc/init.d/dbmail stop
end script
Kevin McCormick
sumber