记一次在服务器上运行node.js程序时无法通过nohup xxx & 方式挂起的问题

      由于业务需求 每天要在服务器上整理一组数据,为了方便就用node.js来写了。但是运行的时候发现了一个问题 明明使用了nohup main.js &的方式后台运行了程序 但是一旦我关闭了shell控制台 这个后台运行的程序也会跟着终止掉,不知道是什么原因,于是采用forever.js的方式来运行项目,记录一下过程。

  1.直接通过npm全局安装foreve.js

$ npm i forever -g

      2. 使用forever启动项目

$ forever start -l /home/node_project/forever.log -m 0 -a main.js &

 注:-m 0 指js执行终止后重试0次 这样就不会循环执行同样的js文件了 如果需要项目宕掉后自动重启 可以将参数调整为大于0的数字

 3. forever.js的常用命令记录如下:(从别的地方粘贴过来的)

复制代码
启动相关

// 1. 简单的启动
forever start main.js &

// 2. 指定forever日志输出位置,默认位置为: ~/.forever/forever.log
forever start -l forever.log main.js &

// 3. 指定main.js中的日志信息和错误日志输出文件,
// -o 就是console.log输出的信息,-e 就是console.error输出的信息
forever start -o out.log -e err.log main.js &

// 4. 追加日志,forever默认是不能覆盖上次的启动日志
forever start -l forever.log -a main.js &

// 5. 监听当前文件夹下的所有文件改动,并重启服务 
forever start -w main.js &

// 6. 显示所有forever运行的任务列表
forever list

停止操作
// 1. 停止所有运行的node App
forever stopall

// 2. 停止其中一个node App
forever stop main.js
// 也可以先通过 forever list 找到对应的程序id 然后执行如下命令关闭:
forever stop [id]

重启操作
// 1. 重新启动所有任务
forever restartall
// 2. 重启其中一个任务
forever restart main.js
复制代码

 

又发现了另一个解决方式 使用nohup启动项目的时候在命令后面加上一个 disown 就好了

比如:

nohup main.js & disown

同样可以解决问题!

posted @   seizedays  阅读(249)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示