有四種方法:
1.forever
forver start bin/www
2.pm2
pm2 strat bin/www
3.node自身進程保護
nohup node /bin/www > 1.log &
平時在系統終端中執行一個命令后如果想立即的停止它,您可以同時按下系統組合鍵"Ctrl+c",這樣命令的進程將會立即被終止,是生產工作中比較常用的命令行快捷鍵之一。或者有些命令在執行時會不斷的在屏幕上輸出信息,影響到咱們繼續輸入命令了,便可以在執行命令時在命令最后面添加上一個"&"符號,這樣命令從開始執行就默認被放到系統后台了。
4.node寫自身進程保護
/**
*Created by zzl on 2017/1/8.
*/
var fork = require('child_process').fork;
//保存被子進程實例數組
var workers = [];
//這里的被子進程理論上可以無限多
var appsPath = ['./app.js'];
var createWorker = function(appPath){
//保存fork返回的進程實例
var worker = fork(appPath);
//監聽子進程exit事件
worker.on('exit',function(){
console.log('worker:' + worker.pid + 'exited');
delete workers[worker.pid];
createWorker(appPath);
});
workers[worker.pid] = worker;
console.log('Create worker:' + worker.pid);
};
//啟動所有子進程
for (var i = appsPath.length - 1; i >= 0; i--) {
createWorker(appsPath[i]);
}
//父進程退出時殺死所有子進程
process.on('exit',function(){
for(var pid in workers){
workers[pid].kill();
}
});
總結:相對來說,pm2 和 forever 比較好,對於nodejs項目, 網頁上有錯誤,pm2 也能守護運行,第三種 nohup node /bin/www > 1.log & 很容易被掛掉。推薦pm2 和 forever ,pm2 和 forever 對比,更加推薦 pm2