为什么 Jenkins shell 脚本在我 运行 sudo pm2 ls 时挂起

why Jenkins shell script hangs when i run sudo pm2 ls

我承认我是 Jenkins 的新手。 我有

Jenkins-tls

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

ssh to the remote machine
sudo pm2 ls

最后一条命令挂起

我 运行 命令行中的相同 2 个命令,它们都运行良好。 仅供参考,我需要 pm2 的 sudo,因为我需要成为 运行 pm2 的 root,没有 sudo,我会被拒绝访问。

有什么想法吗?

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

如何解决?

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

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

如果这变得更长,为什么不将所有命令放在一个远程脚本中,而只是 运行 它与

ssh user@remote /path/to/script