情景一、以前在寫node程序的時候都是node app.js 而後啓動,要是修改了app.js中的內容以後想要更新,又得ctrl+c而後從新啓動程序。javascript
情景二、爲了能及時更新,引入了supervisor來管理進程,修改了app.js以後不用重啓就當即更新了。可是命令行窗口一直存在,不能關閉java
情景三、node
引入forever管理進程,用法其實很簡單:npm
npm install forever -g #安裝 forever start app.js #啓動應用 forever stop app.js #關閉應用 forever restartall #重啓全部應用 #輸出日誌和錯誤 forever start -l forever.log -o out.log -e err.log app.js # 指定forever信息輸出文件,固然,默認它會放到~/.forever/forever.log forever start -l forever.log app.js # 指定app.js中的日誌信息和錯誤日誌輸出文件, # -o 就是console.log輸出的信息,-e 就是console.error輸出的信息 forever start -o out.log -e err.log app.js # 追加日誌,forever默認是不能覆蓋上次的啓動日誌, # 因此若是第二次啓動不加-a,則會不讓運行 forever start -l forever.log -a app.js # 監聽當前文件夾下的全部文件改動(不太建議這樣) forever start -w app.js # 顯示全部運行的服務 forever list ######中止操做 # 中止全部運行的node App forever stopall # 中止其中一個node App forever stop app.js # 固然還能夠這樣 # forever list 找到對應的id,而後: forever stop [id] # 開發環境下 NODE_ENV=development forever start -l forever.log -e err.log -a app.js # 線上環境下 NODE_ENV=production forever start -l ~/.forever/forever.log -e ~/.forever/err.log -w -a app.js #上面加上NODE_ENV爲了讓app.js辨認當前是什麼環境用的