node.js后台运行

node.js一般是当成一条用户命令去执行,当断开链接,应用也就停了。如何让node应用当成服务,在后台执行呢?由于最近要实现一个定时发送邮件的功能,所以查了一下,让node在后台运行的方法。

nohup

最简单的办法就是使用nohup命令

nohup node app.js &

linux下一般想让某个程序在后台运行,很多都是使用&在程序结尾来让程序自动运行。比如我们要运行mysql在后台:

/usr/local/mysql/bin/mysqld_safe --user=mysql &

但是我们很多程序并不像mysqld一样可以做成守护进程,可能我们的程序只是普通程序而已,一般这种程序即使使用&结尾,如果终端关闭,那么程序也会被关闭。为了能够后台运行,我们需要使用nohup这个命令,比如我们有个start.sh需要在后台运行,并且希望在后台一直运行,那么就使用nohup:

nohup /root/start.sh &

在shell中回车后提示:

[~]$ appending output to nohup.out

原程序的标准输出被自动改向到当前目录下的nohup.out文件,起到了log的作用。

forever

github地址: https://github.com/nodejitsu/forever

forever是一个简单的命令式nodejs的守护进程,能够启动,停止,重启App应用。forever完全基于命令行操作,在forever进程之下,创建node的子进程,通过monitor监控node子进程的运行情况,一旦文件更新或进程挂掉,forever会自动重启node服务器,确保应用正常运行。

//全局安装
npm install forever -g 
//启动       
forever start app.js 
//关闭         
forever stop app.js           
//输出日志和错误
forever start -l forever.log -o out.log -e err.log app.js
//自动监控文件变化,文件修改保存之后自动重启app.js      
forever -w app.js  
//查看帮助           
forever -h   

pm2

github地址:https://github.com/Unitech/pm2
告别node-forever,拥抱pm2: http://se77en.cc/2013/06/27/goodbye-node-forever-hello-pm2-translation/

npm install -g pm2
pm2 start app.js -i max //启动一个使用所有CPU核心的集群
pm2 list  //列出所有pm2开启的进程
pm2 monit
pm2 logs //打印日志