【问题标题】:why Jenkins shell script hangs when i run sudo pm2 ls为什么当我运行 sudo pm2 ls 时 Jenkins shell 脚本会挂起
【发布时间】:2021-01-11 09:20:37
【问题描述】:

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

Jenkins-tls

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

ssh to the remote machine
sudo pm2 ls

最后一个命令刚刚挂起

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

有什么想法吗?

【问题讨论】:

  • sudo 需要你输入密码吗?
  • 不是当我在 shell 中并登录到那台机器时。当我从 Jenkins 运行它时,我是从 shell 而不是服务运行 Jenkins,我看到它要求输入密码。所以这是一个很大的线索
  • 您希望sudo pm2 ls 在远程机器上执行吗?因为它不是。当你顺序输入这两个命令时,sudo 会在远程机器上执行,但是 jenkins 中的任何命令都是同步执行的,即 sudo 在 ssh 返回后 运行(例如远程会话终止时) .

标签: bash jenkins sudo pm2


【解决方案1】:

我相信你做出了无效的假设,即 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-09-15
    • 1970-01-01
    • 2011-06-05
    • 2015-07-26
    • 1970-01-01
    • 2015-03-13
    • 1970-01-01
    相关资源
    最近更新 更多