执行shell在运行之前等待

时间:2015-05-14 20:49:56

标签: jenkins

我正在将构建服务器从本地计算机迁移到ec2上的虚拟计算机。我已经完成了所有工作,但是我注意到当我在shell中指定要运行的东西时,它会在实际运行指定的命令之前挂起大约30秒左右。

例如,我要做的第一件事是调用env打印出所有环境变量以帮助排除故障:

enter image description here

如果我观察控制台输出,我会得到这一行,然后是微调器:

$ sh -xe C:\Windows\TEMP\hudson8414496369434804156.sh

大约30秒后,我将获得打印到控制台的环境变量列表。

在微调器没有任何输出的情况下,我可以导航到C:\Windows\TEMP\并打开hudson8414496369434804156.sh以确认文件位于env的内容。所以我只能断定它只是在它坐在那里时没有调用shell ......做某事。

这不是一次性的,每次我使用Execute shell下的Build选项时都会这样做。我接下来要做的是通过git clone运行Execute shell命令,它的行为完全一样。

为什么运行shell命令需要这么长时间,如何停止此操作或减少等待时间?

我不相信这是与机器有关的性能问题,因为新机器有更好的规格:

旧机器:Pentium Dual-Core E5400 2.7GHz4GB RAM300GB HDDWindows 8 Pro

新机:Xeon E5-2670 v2 2.5GHz4GB RAM300GB HDDWindows Server 2012 R2

我没有遇到此问题的旧版Jenkins是1.517,新版本是1.613。在System Information中,旧java.runtime.version1.7.0_21-b11,新1.8.0_20-b26sh --version。转到Window的控制面板,分别显示为Java 7 Update 17(x64)和Java 8 Update 45(x64)。

有什么想法吗?我的Google-fu失败了。欢呼声。

编辑1:

回答Slav's questions:在cmd中运行GNU bash, version 3.1.23(6)-release (i686-pc-msys) Copyright (C) 2005 Free Software Foundation, Inc.会立即返回.sh并且没有延迟。

在我的桌面文件夹中创建虚拟env文件,仅包含内容cmd,然后在sh -xe dummy.sh中使用readable.pipe(writable); 运行它也会立即返回,打印出来所有的环境变量。

0 个答案:

没有答案