在 Jenkins 构建中使用 ssehexec 任务不会停止其执行



我在Jenkins蚂蚁执行插件中有一个蚂蚁任务,作为构建后步骤,在我们的一个服务器中远程运行shell脚本。shell脚本在后台启动一个java进程。当我直接在服务器上执行shell脚本时,它会在后台启动java进程并退出。当我通过sshexec任务从Jenkins运行它时,shell脚本运行,但它永远不会出来,Jenkins Build等待。

后来,当我将timeout属性添加到sshexec时,它会在给定毫秒数后超时,但Jenkins构建显示为失败。如何使ssheec任务从shell脚本执行中清晰地显示出来?

这是我的ssheexec任务

<sshexec host="${deploy.host}" username="${deploy.username}"  password="${deploy.password}" command=". /etc/profile; cd ${deploy.path}; sh start.sh i1" trust="true" timeout="10000" />
start.sh文件如下:
nohup java -Xms512m -Xmx1024m -cp calculation.jar com.tes.StartCalculation $1 &
echo $! > calculation-$1-java.pid

看起来,ssh执行的作业没有完全守护进程。在许多情况下,从nohup开始是不够的。

请参阅与之相关的讨论(在不同的上下文中)

问题是你没有关闭你的文件描述符,当你把一些东西放到背景中。的,当你在一个Shell,但是当您想断开连接并留下一个进程运行时,需要进程断开与shell的连接。

如果有人写了一个没有正确分离的幼稚的服务脚本在终端上,我想知道那个脚本是什么时候出现的在部署中使用- SCM更改将启用破坏性更改被快速识别

隐藏问题以使不正确的代码存在是错误的发布到生产中-如果我第一次知道,我不会高兴的是一个生产系统管理员抱怨的。

如果是同样的问题,您需要守护脚本

相关内容

  • 没有找到相关文章

最新更新