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

Github Actions中PM2 start命令无法启动进程问题求助

PM2进程在GitHub Actions自托管Runner中启动后SSH无法查看的问题

问题详情

代码推送到master分支后,GitHub Actions Workflow的所有步骤均显示执行正常,但通过SSH登录EC2执行pm2 list却看不到任何进程。对应的Workflow配置如下:

name: Node.js CI

on:
 push:
  branches: [ "master" ]

jobs:
 build:

runs-on: self-hosted

strategy:
  matrix:
    node-version: [14.x]
    # See supported Node.js release schedule at https://nodejs.org/en/about/releases/

steps:
- uses: actions/checkout@v3
- name: Use Node.js ${{ matrix.node-version }}
  uses: actions/setup-node@v3
  with:
    node-version: ${{ matrix.node-version }}
    cache: 'npm'
- run: pwd
- run: npm ci
- run: npm run build --if-present
- run: pm2 kill
- run: echo 'pm2 process killed successfully'
- run: pm2 start dist/main.js
- run: pm2 list

核心原因

  1. 用户环境隔离:GitHub Actions自托管Runner通常以特定系统用户(如github-runner)执行任务,而你SSH登录EC2用的是另一个用户(如ec2-user)。PM2是用户级进程管理器,不同用户的PM2进程彼此隔离,跨用户无法查看。
  2. 非交互式Shell与进程回收:Runner的执行环境是非交互式Shell,任务结束后会清理会话环境变量,PM2默认依赖当前Shell的上下文,当Runner任务完成时,系统会回收关联的PM2进程。
  3. 缺少持久化配置:Workflow中仅执行pm2 start,未生成系统级启动配置,即使进程暂时存活,服务器重启或会话结束后也会消失。

解决方案

1. 统一执行用户并添加持久化配置

在Workflow中切换到你SSH登录的用户执行PM2命令,并配置持久化:

# 切换到目标用户(示例为ec2-user),删除旧进程(不存在则忽略)
sudo -u ec2-user pm2 delete your-app-name || true
# 启动进程并指定名称
sudo -u ec2-user pm2 start dist/main.js --name "your-app-name"
# 保存当前PM2进程列表为持久化配置
sudo -u ec2-user pm2 save
# 生成系统服务配置,确保重启后自动恢复进程
sudo -u ec2-user pm2 startup

2. 加载完整用户环境启动PM2

非交互式Shell缺少用户常规环境变量,通过bash -l加载用户的.bashrc/.profile配置后再启动:

sudo -u ec2-user bash -l -c "pm2 start dist/main.js --name 'your-app-name'"

3. 验证Runner执行用户

在Workflow中添加步骤查看Runner的运行用户,确认是否和SSH用户一致:

run: whoami

如果输出用户与SSH用户不同,必须使用sudo -u 目标用户前缀执行所有PM2命令。

4. 优化进程管理逻辑

避免使用pm2 kill一次性终止所有进程,改为针对特定应用操作,减少对其他可能存在的PM2进程的影响:

# 仅删除目标应用进程
sudo -u ec2-user pm2 delete your-app-name || true
# 重新启动目标应用
sudo -u ec2-user pm2 start dist/main.js --name your-app-name

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 12:55:14