Linux
Upstart : 在非 upstart 程序後啟動服務
在 Ubuntu 10.04 上,我需要使用 upstart 啟動我的服務,但前提是 mysql 啟動並執行。
問題是mysql本身不是upstart處理的,所以不能使用“start on”功能。
我能做些什麼 ?
你有幾個選擇:
- 讓 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 準備好,然後退出。讓你的工作“從停止的服務員開始”。
- 將 mysql 轉換為 Upstart 作業(最佳選擇)。這裡有一個新貴 mysql 配置的起點:https ://github.com/devo-ps/init-scripts/tree/master/mysql/ubuntu