为什么 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
我承认我是 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