web-dev-qa-db-ja.com

Ubuntu12.04のinitスクリプトからupstartジョブに依存する方法

私はUbuntu12.04 LTSを使用していますが、このシステムは主にアップスタートジョブを使用しています。残念ながら、私のシステムは手動でコンパイルされた dbmail サーバーにも依存しています。このサーバーには、initスクリプトのみがあり、upstartスクリプトはありません。

update-rc.d dbmail defaultsを使用してすべてのランレベルにdbmailをインストールしましたが、残念ながらMySQLが起動する前に開始されるため、デーモンは再び停止します。また、S90などに移動してみましたが、スクリプト実行時にMySQLが利用できません。

次のように、スクリプトのLSBヘッダーに依存関係を追加しようとしました。

#!/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

残念ながら、スクリプトはまだMySQLよりも前に開始されているようです。私は仕事を始めるのではなく、昔ながらのinitスクリプトに慣れているので、ここでは少し混乱しています。依存関係を追加するにはどうすればよいですか、またはmysqlinitスクリプトの前にdbmailジョブを開始するにはどうすればよいですか?

起動中にジョブと初期化スクリプトの開始順序を確認/確認するにはどうすればよいですか?このためのツールはありますか?

MySQLはすでに実行されているため、起動後にシェルからスクリプトを手動で起動すると正常に機能します。

10
Martin C.

/etc/init.d/dbmail startから/etc/rc.localを実行すると、すべての起動ジョブ/その他のinitスクリプトの後に開始されると思います。

ただし、おそらく/etc/init/dbmail.confに新しい起動ジョブを追加することでこれを修正します。通常、init.dスクリプトには、ステータスなどをチェックするためのコードがたくさんあり、upstartが処理します。それは次のように単純かもしれません:

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

または、おそらく次のような既存のinitスクリプトを使用できます。

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