SSHEXEC任务有一个在Ant中调用命令的脚本,从Jenkins调用,在2小时后超时

时间:2017-07-18 03:16:37

标签: bash shell jenkins ssh ant

从Jenkins开始,基于ANT XML中的目标,我将调用该目标。该目标有SSHEXEC任务。

SSHEXEC任务中,命令调用了脚本。

基本上脚本代码如下所示:

waitForAggregationJobCompletion()
{
while [ 1 ]
do
# Checks for the condition

if [ #Condition] ;then
break;
fi

if [ #Different condition ]; then
break;
fi

done
waitForAggregationJobCompletion

基本上,一旦调用此函数“waitForAggregationJobCompletion”,它就会进入[1]循环&继续检查条件。一旦if满足“IF”条件下存在的条件,它就会破坏。

如果脚本运行1.5小时,则运行良好。但是如果脚本运行的时间较长,那么在Jenkins中它会说它仍在执行,但在Linux服务器上,它将无法运行。

由于ANT中的sshexec任务是否只能在一段时间内保存脚本进程?或者我需要在sshd_config文件中添加任何参数,然后在基于[1]条件的脚本运行较长时间时触发此参数。

我已将记录重定向放在脚本和放大器中一个回复语句重定向到/dev/null,但它没有成功。

当我继续记录重定向时,它会在日期中打印该日志,关闭2.10小时&然后没有记录该文件。

你能帮帮我吗?

1 个答案:

答案 0 :(得分:0)

您可以查看BjørnJohansen在“SSH timeout prevention – keep SSH sessions alive”中提到的提示之一

在客户端,例如:

  

您可以在~/.ssh/config中编辑本地SSH配置文件,并添加以下行:

ServerAliveInterval 120
  

这将在您的SSH连接上每120秒发送一个“空数据包”,以使它们保持活动状态。

在Jenkins上下文中,这将是在Jenkins slave上执行作业的用户的~/.ssh/config

但是如果你有权访问/控制服务器端:

  

将以下内容添加到服务器上/etc/ssh/sshd_config的SSH守护程序配置中,以防止客户端超时 - 这样他们就不必修改本地SSH配置:

ClientAliveInterval 120
ClientAliveCountMax 720
  

这将使服务器每120秒向客户端发送一个“空数据包”,并且在客户端处于非活动状态720个间隔(120秒* 720 = 86400秒= 24小时)之前不会断开它们。