Linux

Upstart : 在非 upstart 程序後啟動服務

  • December 18, 2017

在 Ubuntu 10.04 上,我需要使用 upstart 啟動我的服務,但前提是 mysql 啟動並執行。

問題是mysql本身不是upstart處理的,所以不能使用“start on”功能。

我能做些什麼 ?

你有幾個選擇:

  1. 讓 mysql 通過發出事件通知 Upstart 它已經啟動

initctl emit mysql-started“或類似的。

這可以通過將initctl呼叫添加到/etc/init.d/mysql.

2)從正常的 SysV 執行級別禁用 mysql 並創建一個啟動它的包裝 Upstart 作業(不是這不處理停止 - 只是一個例子):

cat >>/etc/init/mysql-sysv.conf<<EOT
 # wait for SysV job to finish
 start on stopped rc
 exec /etc/init.d/mysql start
EOT

然後,有你的工作“ start on started mysql-sysv”。

/etc/rc?.d這裡的問題是,如果有人(或某些系統工具自動)將連結重新添加到原始/etc/init.d/mysql服務腳本,您將遇到麻煩。此外,您可能會發現 mysql 直到它的主 pid 啟動一段時間*後才真正準備好。*數據庫是有問題的,因為即使它們已經啟動(事務日誌重放等),它們也可能需要一些時間才能“聯機”。

3)創建一個新貴作業(“服務員”),它“在停止的 rc 上啟動”(即在所有 SysV 作業都聲稱已完成時開始),然後輪詢等待 mysql 準備好,然後退出。讓你的工作“從停止的服務員開始”。

  1. 將 mysql 轉換為 Upstart 作業(最佳選擇)。這裡有一個新貴 mysql 配置的起點:https ://github.com/devo-ps/init-scripts/tree/master/mysql/ubuntu

引用自:https://serverfault.com/questions/370417