今天使用jenkins部署程序发现部署过程总会在unzip之后ssh断开

检查脚本后发现,unzip之后是kill操作

shellkill -9 `ps -ef |grep "$projectName" | awk '{print $2}'`

该命令过滤过于暴力,把该项目的jenkins线程也grep出来一并kill掉了,导致ssh断开— status[-1]非正常中断。

看了网上的文章,增加了对“java”关键字的过滤,希望能把jenkins排除掉,改为

shellkill -9 `ps -ef |grep "$projectName" |grep java| awk '{print $2}'`

然而还是无效。将ps结果echo出来发现,jenkins的ssh指令中附带了全部的部署脚本,所写的脚本都会附在指令中,因此不管怎么修改脚本都是会被grep命中。

最终解决方式是将kill写到项目中的kill.sh放在机器上,jenkins中执行sh /$projectFolder/kill.sh。

这样就不会命中jenkins线程了