bash - 为什么当我运行 sudo pm2 ls 时 Jenkins shell 脚本会挂起
问题描述
我承认我是詹金斯的新手。我有
詹金斯-tls
安装在我的 Mac 上进行实验。我有一个用于测试的远程服务器。我的 Jenkins 脚本非常简单。
ssh to the remote machine
sudo pm2 ls
最后一个命令只是挂起
我从命令行运行相同的 2 个命令,一切正常。仅供参考,我需要 sudo 来运行 pm2,因为我需要 root 才能运行 pm2,没有 sudo,我会被拒绝访问。
有什么想法吗?
解决方案
我相信您做出了无效的假设,即詹金斯在启动 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
推荐阅读
- xmpp - 设置 EjabberD XMPP VCard 昵称
- javascript - 使用 Wordpress Rest api 获取请求不起作用(仅在 Edge 上)
- c# - 该系统找不到指定的文件。.p12 证书文件错误
- r - 如何使用 R 中的函数将行添加到数据框中
- javascript - 在表单提交时重置扩展文本区域的高度
- asp.net - 上传多张图片在 ASPX 中
- angular - Highcharts:零对齐y轴角度6
- c# - ZXing.Net 解码条形码给出错误 - 无法从“System.Drawing.Bitmap”转换为“ZXing.LuminanceSource”
- angular - 角度创建覆盖
- ruby-on-rails - Rails 应用程序中使用的 .json 文件是什么?