Ubuntu

無法在啟動時啟動 node.js 程序的新貴腳本

  • September 11, 2016

我為我的 node.js 程序製作了一個相當簡單的啟動腳本,它應該在啟動時執行:

start on startup
stop on shutdown

script
   exec sudo -u max WEBSITES_DIR=/home/max/websites/ /usr/local/bin/node /home/max/websites/server.js 2>&1 >> /var/log/node.log
end script

如果我使用:

sudo start my-program 

它可以工作,但是當我重新啟動機器時,我收到錯誤消息:

init: my-program main process (325) terminated with status 2

有人知道如何調試這個嗎?

startup事件是在 Upstart 啟動過程中發出的第一個事件。有各種各樣的事情還沒有發生 - 根文件系統仍然會以只讀方式掛載,網路尚未初始化等。

我懷疑該作業正在快速退出,因為它的所有依賴項(顯式或隱式)尚未初始化。我會將開始條件更改為類似

start on filesystem and started networking

至少那時您將能夠寫入您的日誌文件。

附帶說明一下,您似乎顛倒了輸出重定向參數-實際上您的意思是>> /var/log/node.log 2>&1. using2>&1的意思是“取目前 fd 1 的任何內容,並使 fd 2 相同”,但您尚未更改 stdout 的內容。

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