PM2报Process or Namespace not found:GitHub Actions执行失败SSH运行正常
排查思路
- 校验执行用户一致性
PM2的进程列表是按系统用户隔离的,分别在SSH终端和GitHub Actions任务脚本中执行whoami命令,确认两者运行命令的用户是否完全一致。如果用户不同,GitHub Actions对应的用户下没有创建对应PM2进程,就会抛出找不到进程的错误。 - 核对PM2_HOME环境变量
PM2默认将进程元数据存储在当前用户家目录下的.pm2文件夹中,该路径由PM2_HOME环境变量指定。分别在两端执行echo $PM2_HOME,如果GitHub Actions运行时该变量被修改,会导致PM2读取不到原有进程数据。如果路径不一致,可在Actions脚本执行PM2命令前显式声明:export PM2_HOME=/home/[你的SSH登录用户名]/.pm2 - 检查PM2二进制路径与版本
不同用户的PATH变量配置可能存在差异,分别在两端执行which pm2和pm2 -v,确认调用的PM2二进制文件路径、版本完全一致,避免GitHub Actions调用了其他位置安装的PM2程序。 - 排查自托管Runner权限限制
更新系统后可能重置了自托管GitHub Actions Runner的运行权限,比如Runner进程被做了目录隔离、权限降级,无法读取PM2进程存储目录的内容,或无权限访问对应PM2进程。可在Actions脚本中执行pm2 list确认输出是否和SSH端一致。 - 临时规避方案
如果需要临时恢复流水线运行,可放弃基于进程名/ID重启的方式,直接指定项目PM2配置文件路径执行重启:pm2 restart /path/to/你的项目/ecosystem.config.js,避免读取现有进程列表的步骤。
相关截图
GitHub Action运行报错截图

SSH终端执行正常截图

内容的提问来源于stack exchange,提问作者Waleed Tariq
相关产品推荐
相关产品推荐

