最近有个后端项目,用的是node,在持久化的时候会挂掉,详细了解到用的是nohup,然后先详细了解了一下nohup

nohup是一个Linux命令,用于在系统后台不挂断地运行命令,退出终端不会影响程序的运行1nohup的英文全称是no hang up(不挂起)。

nohup为什么不稳定,可能有以下几个原因:

1.nohup命令只能保证程序在后台运行,但不能保证程序不会因为其他原因而终止,比如内存不足、程序异常、系统重启等。

2.nohup命令在默认情况下(非重定向时),会输出一个名叫nohup.out的文件到当前目录下,如果当前目录的nohup.out文件不可写,输出重定向到$HOME/nohup.out文件中

3如果这些文件被删除或者磁盘空间不足,可能会导致程序无法正常输出或者崩溃。

4.nohup命令在执行时,会将当前shell的标准输入、标准输出和标准错误输出全部重定向到/dev/null设备中,避免被关闭终端的信号所中断,但是,如果程序需要从标准输入读取数据或者向标准输出和标准错误输出写入数据,那么nohup命令可能会造成程序阻塞或者异常。

解决思路:

这个时候我想到了forever,因为之前碰到类似的问题,也写文章写了如何安装,但是在安装完之后碰到过一个问题,就是这个问题,但是当我安装完运行的时候报错如下

报错信息

(node:9352) Warning: Accessing non-existent property 'padLevels' of module exports inside circular dependency

找到了相关的解决方案是说这个错误是因为 Node.js 中存在循环模块依赖,导致在解析模块过程中访问了未定义的属性,node在高于node14以后就不支持循环依赖,所以会报错,如果切换node版本低于14或者12就不会有这个问题,但是,因为项目的版本是node16,所以切换版本是不可能的, 所以解决方案要么就是解决掉循环依赖的问题,要么就是换其他的持久化工具,综合条件下我选择了第二种,切换持久话工具,那就是pm2

PM2介绍

PM2 是一个守护进程管理工具,帮助您管理和守护您的应用程序。它以简单直观的 C​​LI 命令行方式进行工作。当然,pm2还有一个非常好用的功能就是开机自启动程序

1.安装pm2

上传文件到/home/tool/pm2 目录下,这个可以自己决定到那个目录,但是下面的路径需要和安装的路径保持一致,当然简单安装就是

npm install pm2 -g

但是问题就是重启之后pm2的环境变量就不见了,当然也有可能是个例,所以我选择了下面的安装方式

安装包地址

链接: https://pan.baidu.com/s/1XbeL48bGgR2oM14Uc9VCKw

提取码: xxxq

解压

tar -xvf pm2-5.2.2.tar

创建软连接

ln -s /home/tool/pm2/pm2-5.2.2/bin/pm2 /usr/local/bin/pm2

2.执行pm2查看输出

安装完成后,在任何地方输入pm2会打印下面的信息

pm2

3.在程序的根目录下执行

cd  /home/20230809

启动程序

pm2 start ./src/app.js --silent       //--silent表示不需要日志,但是还是可以看到日志,奇怪

然后执行 ,看到status为 online表示当前为在线

 pm2 ls

前台访问

常用维护命令:

停止所有的程序:

pm2 stop all

重新启动所有应用:

pm2 restart all

查看日志:

pm2 logs

开机启动

启动:

$ pm2 startup

保存:

$ pm2 save

更多的功能请访问官网了解

pm2中文官网

代替forever下一个部署node的持久化工具---pm2的更多相关文章

  1. mongodb在window下和linux下的部署 和 安装可视化工具

    Windows安装    安装Mongo数据库: 在发布本文的时间官方提供的最新版本是:2.4.0 ,如果不做特殊声明,本教程所用的版本将会是这个版本. 第一步:下载安装包:http://www.mo ...

  2. 一文教你如何使用Node进程管理工具-pm2

    pm2 是什么 pm2 是一个守护进程管理工具,它能帮你守护和管理你的应用程序.通常一般会在服务上线的时候使用 pm2 进行管理.pm2 能做的其实有很多,比如监听文件改动自动重启,统一管理多个进程, ...

  3. 在Linux服务器上部署node项目(git部署,forever持续运行,配置SSL证书)

    一.环境部署 1.下载安装包: wget https://nodejs.org/dist/v9.9.0/node-v9.9.0-linux-x64.tar.xz 2.解压并进入目录: xz -d no ...

  4. linux CentOs 7.4 64位 系统下 nuxt部署 、nginx 安装、node环境及软连接,pm2软连接

    一.nginx安装 1.安装依赖包 //一键安装上面四个依赖 yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel 2 ...

  5. [Swift]LeetCode1019. 链表中的下一个更大节点 | Next Greater Node In Linked List

    We are given a linked list with head as the first node.  Let's number the nodes in the list: node_1, ...

  6. LeetCode OJ:Populating Next Right Pointers in Each Node II(指出每一个节点的下一个右侧节点II)

    Follow up for problem "Populating Next Right Pointers in Each Node". What if the given tre ...

  7. LeetCode 1019. Next Greater Node In Linked List (链表中的下一个更大节点)

    题目标签:Linked List, Stack 题目给了我们一个 Linked List,让我们找出对于每一个数字,它的下一个更大的数字. 首先把 Linked List 里的数字 存入 ArrayL ...

  8. 【LeetCode】116. 填充每个节点的下一个右侧节点指针 Populating Next Right Pointers in Each Node 解题报告(Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 递归 日期 题目地址:https://leetcode ...

  9. 部署node程序并维持正常运行时间

    12.2部署的基础知识 假定你创建了一个想要展示的Web程序,或者创建了一个商业应用,在把它放到生产环境中之前需要测试一下.你很可能会从一个简单的部署开始,然后再做些工作让它的正常运行时间和性能达到最 ...

  10. K8S入门系列之集群二进制部署-->node篇(三)

    node节点组件 docker kubelet kube-proxy kubernetes-server-linux-amd64.tar.gz(相关的这里都能找到二进制文件!) falnnel 1. ...

随机推荐

  1. 【工作随手记】mysql优化之1

    原SQL: SELECT p.id, p.NAME, p.idcard, p.phone, p.plate, p.FAMILY_NO FROM t_person_info p WHERE p.id I ...

  2. EL表达式访问JavaBean

    前景提要 刚才有个朋友问我,赵大哥这个实验怎么做?我说哪个实验,给我发了几张截图.我一看,嗷,原来是今天,有个Java实验啊,他说大哥,能不能教教我,我说可以.我一说 他 啪的就站起来了, 很快啊 , ...

  3. Charles抓包补充解释

    配置 大佬的博客真的很详细很详细,我就不重复造轮子了,第一次直接看大佬的博客就好,这里Python爬取微信小程序(Charles) 补充解释 在这一步疑问很多,大佬说的不是很详细,就由我来补充下吧~ ...

  4. flutter apk启动闪退问题

    今发布一个flutter apk 安装后启动时老是闪退,经过一遍又一遍查找,发现是指定了so的问题 看多次点击启动 一.比对打包后的apk 在出现该问题后也搜索了不少资料,参考过 https://bl ...

  5. 基于SqlSugar的开发框架循序渐进介绍(31)-- 在查询接口中实现多表联合和单表对象的统一处理

    在一些复杂的业务表中间查询数据,有时候操作会比较复杂一些,不过基于SqlSugar的相关操作,处理的代码会比较简单一些,以前我在随笔<基于SqlSugar的开发框架循序渐进介绍(2)-- 基于中 ...

  6. ENVI5.6 安装教程,新手入门(超详细)附安装包和常见问题

    ENVI是一个完整的遥感图像处理平台,广泛应用于科研.环境保护.气象.农业.林业.地球科学.遥感工程.水利.海洋等领域.目前ENVI已成为遥感影像处理的必备软件,包含辐射定标.大气校正.镶嵌裁剪.分类 ...

  7. 驱动开发:内核封装WFP防火墙入门

    WFP框架是微软推出来替代TDIHOOK传输层驱动接口网络通信的方案,其默认被设计为分层结构,该框架分别提供了用户态与内核态相同的AIP函数,在两种模式下均可以开发防火墙产品,以下代码我实现了一个简单 ...

  8. 如何批量修改 GitHub 代码提交作者

    批量修改 GitHub 代码提交作者需要进行以下步骤: 首先,你需要 clone 远程仓库到本地,使用以下命令: git clone <repository-url> ``` 将 `< ...

  9. 前端仿京东、天猫带搜索历史搜索栏搜索框searchBar

    快速实现前端仿京东.天猫带搜索历史搜索栏搜索框searchBar, 使用简单便利, 请访问uni-app插件市场地址:https://ext.dcloud.net.cn/plugin?id=12529 ...

  10. 国产MCU兆易GD32实现矩阵按键扫描

    一.矩阵键盘     为了减少I/O口的占用,通常将按键排列成矩阵形式.在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接.使用8个io口来进行16个按键的控制读取,可以减 ...