You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu服务器上PM2进程自动停止,如何持久化运行Node.js应用?

解决PM2进程消失、列表为空的问题

1. 确保PM2随系统开机自启

PM2本身如果没配置开机启动,服务器重启后会直接消失;要是PM2进程自己崩溃了,也会导致进程列表清空。先执行:

pm2 startup ubuntu

执行完会弹出一条需要你手动运行的系统命令(比如systemctl enable pm2-root之类的),照着执行就行。然后保存当前的PM2进程列表,确保重启后自动恢复:

pm2 save

2. 查看日志找根因

别瞎猜问题,先看日志:

  • PM2自身的日志在~/.pm2/pm2.log,实时查看用:
    tail -f ~/.pm2/pm2.log
    
  • 你的应用日志直接用PM2命令看:
    pm2 logs backend
    

日志里大概率能找到PM2崩溃、应用异常退出的细节——比如内存爆了、有未捕获的错误,或者PM2本身的bug。

3. 修正启动命令的路径问题

你现在先cd myapp再启动的方式不靠谱,要是PM2的工作目录出问题,很容易丢进程。直接在启动命令里指定应用的绝对路径:

pm2 start npm --name='backend' --cwd /实际路径/myapp -- start

把/实际路径/myapp换成你应用的真实绝对路径,这样不管在哪个目录执行命令,PM2都能找到正确的启动目录。

4. 配置PM2的重启策略

给PM2明确配置重启规则,避免异常退出后无法自动恢复:
先重启应用并设置参数:

pm2 restart backend --max-restarts 10 --restart-delay 3000

或者更稳妥的是用配置文件管理:
生成配置文件:

pm2 ecosystem

编辑生成的ecosystem.config.js,填上你的应用信息:

module.exports = {
  apps : [{
    name: 'backend',
    script: 'npm',
    args: 'start',
    cwd: '/实际路径/myapp',
    max_restarts: 10,
    restart_delay: 3000
  }]
};

然后用配置文件启动:

pm2 start ecosystem.config.js

5. 检查系统资源

要是服务器内存不够,系统会直接杀掉PM2或者Node进程。用free -h看内存剩余,htop看实时资源占用。如果内存不足,要么升级服务器,要么优化你的Node应用(比如排查内存泄漏、开启内存监控)。

6. 更新PM2到最新版本

旧版本PM2可能存在导致进程消失的bug,先更新:

npm install pm2@latest -g
pm2 update

更新完重新启动应用并执行pm2 save。


内容的提问来源于stack exchange,提问作者Nandhini Rajkumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 08:31:01