news 2026/6/14 18:36:23

jenkins执行shell 找不到pm2

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
jenkins执行shell 找不到pm2

在 Jenkins 执行 Shell 时遇到pm2: command not found是非常常见的问题,根本原因是Jenkins 运行环境的 PATH 变量与用户登录环境不一致

以下是完整的解决方案,按推荐顺序排列:

1. 使用绝对路径(最可靠)

在 Jenkins 服务器上先查找 pm2 的真实路径:

bash

复制

which pm2 # 示例输出:/root/.nvm/versions/node/v16.15.1/bin/pm2

然后在 Jenkins Shell 中使用完整路径:

bash

复制

/root/.nvm/versions/node/v16.15.1/bin/pm2 restart your-app

2. 创建软链接(常用方案)

将 pm2 链接到系统 PATH 目录:

bash

复制

# 查找 pm2 路径 which pm2 # 输出如 /root/.nvm/versions/node/v16.15.1/bin/pm2 # 创建软链接(推荐 /usr/local/bin) sudo ln -s /root/.nvm/versions/node/v16.15.1/bin/pm2 /usr/local/bin/pm2 sudo ln -s /root/.nvm/versions/node/v16.15.1/bin/node /usr/local/bin/node sudo ln -s /root/.nvm/versions/node/v16.15.1/bin/npm /usr/local/bin/npm

3. 在 Jenkins Shell 中加载环境

在 Jenkins 的"执行 Shell"步骤开头添加:

bash

复制

# 加载系统环境变量 source /etc/profile # 如果使用 NVM,必须加载 NVM 脚本 export NVM_DIR="$HOME/.nvm" [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # 然后执行 pm2 命令 pm2 restart your-app

4. 配置 Jenkins 全局环境变量

在 Jenkins 系统设置中:

  1. Manage Jenkins → System → Global Properties

  2. 勾选Environment variables

  3. 添加变量:

    • PATH/usr/local/bin:/usr/bin:/bin:/your/node/path

    • 或添加NODE_HOME/root/.nvm/versions/node/v16.15.1

5. 使用 npx(临时方案)

如果不想配置环境,可以直接使用 npx:

bash

复制

npx pm2 restart your-app

6. 权限问题处理

如果提示权限不足,确保 Jenkins 用户有权访问 pm2:

bash

复制

# 查看 Jenkins 运行用户 ps aux | grep jenkins # 如果是 jenkins 用户,建议用 root 运行或配置 sudo # 在 /etc/sudoers 中添加: jenkins ALL=(ALL) NOPASSWD: /usr/local/bin/pm2

然后在 Jenkins Shell 中使用:

bash

复制

sudo pm2 restart your-app

快速验证:在 Jenkins 中添加一个"执行 Shell"步骤,运行以下命令测试:

bash

复制

echo $PATH which node which pm2 pm2 --version

根据输出结果选择最适合你的解决方案。通常方案1或方案2能彻底解决大部分问题。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/15 12:22:23

5分钟快速上手DWMBlurGlass:让你的Windows界面焕然一新

还在为Windows系统单调乏味的界面而烦恼吗?DWMBlurGlass作为一款专业的Windows美化工具,能够为你的系统带来全新的透明模糊效果体验。无论你是Windows 10还是Windows 11用户,这款开源软件都能通过深度集成系统DWM机制,实现无需修改…

作者头像 李华
网站建设 2026/6/14 4:53:37

高效容器化部署:面向开发者的AzerothCore Docker解决方案

高效容器化部署:面向开发者的AzerothCore Docker解决方案 【免费下载链接】azerothcore-wotlk Complete Open Source and Modular solution for MMO 项目地址: https://gitcode.com/GitHub_Trending/az/azerothcore-wotlk 传统MMO服务器部署面临三大核心痛点…

作者头像 李华
网站建设 2026/6/15 13:23:33

Tiled碰撞蒙版终极指南:5分钟掌握游戏物理边界设计

Tiled碰撞蒙版终极指南:5分钟掌握游戏物理边界设计 【免费下载链接】tiled 项目地址: https://gitcode.com/gh_mirrors/til/tiled 还在为游戏角色穿墙、道具悬浮而烦恼吗?想要让游戏世界更加真实可信,却又被复杂的物理引擎配置困扰&a…

作者头像 李华
网站建设 2026/6/15 13:09:24

EmotiVoice语音节奏控制功能上线:可调节语速停顿情感起伏

EmotiVoice语音节奏控制功能上线:可调节语速停顿情感起伏 在有声读物的深夜陪伴中,你是否曾因机械平直的AI朗读而走神?在游戏NPC说出关键台词时,有没有期待过它能真正“愤怒”或“颤抖”?当虚拟助手一遍遍用同样的语调…

作者头像 李华
网站建设 2026/6/15 15:49:29

如何用pyinstaller打包使用了pyQt的程序?告诉你方法!

假设我在在 Qt Designer 中编写好了一个 draw.ui 文件,然后在一个 main.py 文件中读取使用了该 draw.ui 文件。现在我需要用 pyinstaller 将这个 main.py 文件打包为 main.exe 文件,结果发现这需要对 draw.ui 进行特殊处理,为什么呢&#xff…

作者头像 李华
网站建设 2026/6/15 15:33:16

Boltz生物分子交互模型安装配置完全指南

Boltz生物分子交互模型安装配置完全指南 【免费下载链接】boltz Official repository for the Boltz-1 biomolecular interaction model 项目地址: https://gitcode.com/GitHub_Trending/bo/boltz Boltz生物分子交互模型是一个革命性的开源工具,专门用于预测…

作者头像 李华