Linux环境下Node.js后台运行方式(实用版)

Linux环境下Node.js后台运行方式(实用版)

在Linux服务器部署Node.js项目时,直接通过npm start启动应用后,终端关闭会导致进程终止,无法实现长期稳定运行。本文整理两种常用且实用的后台运行方式,其中pm2推荐用于生产环境,screen/tmux适合临时调试或简单部署,步骤清晰可直接复制操作,附异常解决和截图预留。

一、推荐方式:pm2(生产环境首选)

pm2是Node.js生态中成熟的进程管理工具,支持进程守护、自动重启、日志管理、开机自启等功能,能有效保障项目稳定运行,解决终端关闭导致进程中断的问题。

1.1 常见异常及解决(必看)

在执行pm2相关命令时,常遇到「pm2未找到命令」「npm未找到命令」的问题,如下所示,已给出对应解决方法:

异常1:pm2命令未找到

root@jumpserver server\]# pm2 status -bash: pm2: 未命令 ## 异常2:npm命令未找到(本质是Node.js未正确激活) \[root@jumpserver server\]# npm install -g pm2 -bash: npm: 未找到命令 ## 解决方法:激活已安装的Node.js版本(以nvm管理的node16为例) \[root@jumpserver server\]# nvm install 16 # 若未安装则安装,已安装则提示已存在 v16.20.2 is already installed. Now using node v16.20.2 (npm v8.19.4) # 激活成功,此时npm可正常使用 1.2 pm2完整操作步骤 步骤1:安装pm2(全局安装,一次安装终身使用) npm install -g pm2 步骤2:启动Node.js应用(核心命令) pm2 start npm --name "your-app" -- start ## 说明: ## 1. "your-app" 替换为你的项目名称(自定义,方便后续管理) ## 2. 末尾的 start 对应你package.json中scripts里的启动命令(若你的启动命令是dev,需改为 -- dev) 步骤3:查看应用运行状态 pm2 status ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/926e54a90d264c81bf7b94d28113217c.png) 此处插入pm2 status命令执行后的截图,可清晰看到项目名称、进程ID、运行状态(online/offline)、CPU/内存占用等信息。 步骤4:删除指定应用进程(补充常用命令,适配需求) pm2 delete dev-server # 删除名称为dev-server的应用进程 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/8357cedac7fc4c49b9729cd1cabde3ef.png) 此处插入pm2 delete dev-server命令执行后的截图,展示进程删除成功的提示信息。 步骤5:启动指定名称的应用(适配需求命令) pm2 start npm --name "dev-server" -- run dev ## 说明:run dev 对应package.json中scripts里的dev启动命令,需根据自身项目配置调整 ![【截图预留】](https://i-blog.csdnimg.cn/direct/de138ce88e1f4da6adaa73c6e190727a.png) 此处插入pm2 start npm --name "dev-server" -- run dev命令执行后的截图,展示应用启动成功的提示。 步骤6:查看指定应用详情(补充常用命令,适配需求) pm2 show dev-server # 查看名称为dev-server的应用详细信息(端口、日志路径等) ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/dd1e6c586f8e4b5e9e536966b288d58e.png) 此处插入pm2 show dev-server命令执行后的截图,展示应用的详细配置及运行信息。 步骤7:查看应用运行日志(排查问题必备) 步骤4:查看应用运行日志(排查问题必备) pm2 logs ## 可选:查看指定项目的日志 pm2 logs your-app 步骤8:设置pm2开机自启(生产环境关键步骤) 默认情况下,服务器重启后pm2管理的进程会丢失,需执行以下命令设置开机自启: pm2 startup # 生成开机自启脚本 pm2 save # 保存当前pm2管理的进程列表 二、备选方式:screen/tmux(临时调试/简单部署) screen和tmux是Linux下的终端会话管理工具,通过创建独立会话,让Node.js应用在会话中运行,即使关闭终端,会话依然保持,适合临时调试项目或简单部署(不推荐生产环境,无自动重启功能)。 2.1 screen操作步骤(更简单,推荐新手) 步骤1:安装screen(根据Linux系统版本选择命令) ## CentOS/RHEL系统(如阿里云、腾讯云服务器常用) yum install screen -y ## Ubuntu/Debian系统 apt-get install screen -y 步骤2:创建新的screen会话(自定义会话名称,方便识别) screen -S myapp # myapp替换为你的会话名称(如node-project) 步骤3:在会话中启动Node.js应用 cd 你的项目目录 # 先进入项目根目录 npm start # 启动应用(与平时启动方式一致) 步骤4:分离会话(关闭终端不中断进程) 在启动应用的终端中,按快捷键:Ctrl + A → 松开后按 D,即可分离会话,此时应用仍在后台运行,可安全关闭终端。 步骤5:重新连接会话(查看或操作应用) screen -r myapp # myapp替换为你创建的会话名称 ## 若提示多个会话,可先执行 screen -ls 查看会话ID,再用 screen -r 会话ID 连接 2.2 补充说明 tmux操作逻辑与screen类似,功能更强大,但命令稍复杂,新手可先掌握screen,后续按需学习tmux。两种工具均无自动重启功能,若应用崩溃,需手动重新启动,因此仅适合临时使用。 三、总结 * 生产环境:优先使用pm2,支持进程守护、自动重启、开机自启,稳定性高,日志管理便捷; * 临时调试/简单部署:使用screen,操作简单,快速实现后台运行,无需复杂配置; 所有命令均经过实际测试,可直接复制执行,若遇到其他异常,可在评论区留言交流。

相关推荐
lemon_yyds20 小时前
node 包管理工具 : nvm vs fvm
node.js
zhangrelay20 小时前
三分钟云课实践速通--大学物理--python 版
linux·开发语言·python·学习·ubuntu·lubuntu
风翼靓崽21 小时前
linux命令杂记 - 杂乱无章
linux·运维·服务器
handler0121 小时前
Linux 进程探索:从 PCB 管理到 fork() 的写时拷贝
linux·c语言·c++·笔记·学习
域中四大21 小时前
rk3568中修改波特率
linux·运维
互联网推荐官21 小时前
大模型应用开发的上下文工程与推理链路深度拆解
大数据·运维·人工智能
风曦Kisaki1 天前
# Linux Shell 编程入门 Day01:Shell 基础认知、脚本编写规范、变量四大类型、数值运算
linux·运维·chrome
云智慧AIOps社区1 天前
云智慧亮相第二十八届智能体驱动的GOPS全球运维大会2026 · 深圳站!以运维智能体 Castrel AI (SRE Agent)保障系统稳定可靠!
运维·人工智能·ai agent·运维自动化·sre 智能体
校羽干1 天前
ubuntu22.04 安装卸载更新 ollama
运维·服务器
大强同学1 天前
Obsidian链接收藏自动化
运维·自动化