记一次在服务器上运行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
同样可以解决问题!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了