从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小时&然后没有记录该文件。
你能帮帮我吗?
答案 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小时)之前不会断开它们。