我们用ssh远程登录,打开的node服务,只要我们终端关闭,就会出现node服务被杀死的情况。这是因为Linux的自身机制,如果要解决这个在后台运行的问题,可以有如下方法
- 使用nohup命令
sudo nohup node ./bin/www &
&
这个是代表放在后台运行
如果上面的命令行运行成功了,你使用jobs
命令显示出当前后台运行的进程 - 修改/etc/rc.d/rc.local文件
把要执行的命令写入这个文件。因为这个文件是开机启动项,每次开机的时候,系统会去touch它然后会执行这些命令行。 - 使用系统定时任务,让系统在指定时间执行某个后台任务
上面三种方法来自慕课网 Linux教程
- 使用 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
npm install -g pm2
pm2 start app.js -i max //启动一个使用所有CPU核心的集群
pm2 list //列出所有pm2开启的进程
pm2 monit
pm2 logs //打印日志
以上两种来自网上博客资料未经验证