首页 > 解决方案 > 为什么当我运行 sudo pm2 ls 时 Jenkins shell 脚本会挂起

问题描述

我承认我是詹金斯的新手。我有

詹金斯-tls

安装在我的 Mac 上进行实验。我有一个用于测试的远程服务器。我的 Jenkins 脚本非常简单。

ssh to the remote machine
sudo pm2 ls

最后一个命令只是挂起

我从命令行运行相同的 2 个命令,一切正常。仅供参考,我需要 sudo 来运行 pm2,因为我需要 root 才能运行 pm2,没有 sudo,我会被拒绝访问。

有什么想法吗?

标签: bashjenkinssudopm2

解决方案


我相信您做出了无效的假设,即詹金斯在启动 ssh 到远程会话的命令外壳后以某种方式“键入”命令。这不是发生的事情。相反,它将等待 ssh 命令完成,然后才执行下一个命令sudo pm2 ls。这永远不会发生,因为 ssh 会话永远不会终止。您将此视为“挂起”。

如何解决这个问题?

如果只有少量命令,您可以使用 ssh 来运行它们

ssh user@remote sudo mp2 ls
ssh user@remote command arg1 arg2

如果这变得更长,为什么不将所有命令放在远程脚本中并运行它

ssh user@remote /path/to/script

推荐阅读