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

无法修复pm2 syslog错误:pm2-root.service启动后找不到pm2.pid文件

问题根因定位

从提供的系统日志可以明确三个核心故障点:

  • pm2注册的systemd服务启动超时:systemd等待/root/.pm2/pm2.pid文件生成超时后,主动杀死pm2进程触发循环重启
  • pm2恢复的业务进程/opt/tessa5g/server.js启动失败,状态为errored
  • pm2依赖的shelljs包与当前服务器的Node.js版本存在兼容性问题,触发大量循环依赖警告
解决步骤

1. 修复Node.js与pm2的兼容性问题

循环依赖警告是shelljs@0.8.4及更低版本与Node.js@14+版本不兼容导致,操作如下:

  • 停止当前pm2服务:systemctl stop pm2-root
  • 卸载全局pm2:npm uninstall -g pm2
  • 清理pm2残留目录:rm -rf /root/.pm2
  • 安装最新稳定版pm2:npm install -g pm2@latest

2. 修复systemd服务的PID配置问题

systemd找不到PID文件是默认服务配置的等待逻辑与pm2实际启动节奏不匹配导致,操作如下:

  • 编辑pm2-root的systemd配置文件:nano /etc/systemd/system/pm2-root.service
  • 修改[Service]段配置,内容如下:

[Service]
Type=forking
PIDFile=/root/.pm2/pm2.pid
TimeoutStartSec=10s
ExecStart=/usr/local/bin/pm2 resurrect
ExecReload=/usr/local/bin/pm2 reload all
ExecStop=/usr/local/bin/pm2 kill
User=root
Restart=on-failure
RestartSec=10s

  • 重载systemd配置:systemctl daemon-reload

3. 修复业务进程启动失败问题

日志显示pm2恢复的server.js进程状态为errored,说明业务代码本身无法正常启动,和pm2无关,操作如下:

  • 手动启动业务进程排查报错:cd /opt/tessa5g && node server.js
  • 根据终端输出的报错信息修复业务问题(常见原因:端口被占用、依赖未安装、环境变量缺失、文件权限不足)
  • 业务进程手动启动正常后,用pm2重新启动:pm2 start server.js --name server
  • 保存pm2进程列表:pm2 save

4. 验证修复结果

  • 启动pm2 systemd服务:systemctl start pm2-root
  • 查看服务状态:systemctl status pm2-root,确认服务状态为active(running)无报错
  • 查看pm2进程列表:pm2 ls,确认server进程状态为online

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 13:06:06