Upstart

新貴的多個服務實例不起作用

  • September 3, 2014

我開始在 Lucid 上使用 MongoDB。現在我想在同一個盒子上執行一個數據庫和配置伺服器。它們都使用相同的二進製文件來啟動,但使用不同的配置文件並在不同的埠上執行。log 和 lib 的所有目錄都被拆分,因此一個進入 mongodb,另一個進入 mongoconf。

每個過程都可以自行啟動而不會出現任何問題。

start mongodb 
stop mongodb
start mongoconf
stop mongoconf

但是,如果我嘗試同時啟動兩者,則第二個將啟動並退出。使用“initctl log-priority debug”,我在日誌中得到了以下資訊。

Jan  6 12:44:12 mongo4 init: event_finished: Finished started event
Jan  6 12:44:12 mongo4 init: job_process_handler: Ignored event 1 (1) for process 5690
Jan  6 12:44:12 mongo4 init: mongoconf (mongoconf) main process (5690) terminated with status 1
Jan  6 12:44:12 mongo4 init: mongoconf (mongoconf) goal changed from start to stop
Jan  6 12:44:12 mongo4 init: mongoconf (mongoconf) state changed from running to stopping

man 5 init 表明您可以使用實例名稱來區分兩者。我嘗試在 on upstart 腳本中使用“instance mongoconf”,在另一個腳本中使用“instance mongodb”,但它仍然失敗。我可以手動啟動其他程序,因此埠號或目錄絕對沒有衝突。

關於嘗試什麼或如何獲得關於為什麼它“以狀態 1 終止”的任何想法?

謝謝

對於發現這一點的勇敢的系統管理員,upstart 不僅測試路徑,而且似乎測試inode是否不同。這意味著硬連結文件也是不可能的。多次執行同一個二進製文件的唯一方法是製作多個副本。

做了一些測試,我發現 upstart 使用二進製文件的完整路徑來查看它是否是同一個程序。因此,在不同位置製作二進製文件的副本將允許您創建兩個新貴腳本。

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