Upstart
新貴的多個服務實例不起作用
我開始在 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 使用二進製文件的完整路徑來查看它是否是同一個程序。因此,在不同位置製作二進製文件的副本將允許您創建兩個新貴腳本。