先贴一个jenkins ssh配置的博文(讲的很清晰):ssh连接目标服务器
其实触发[Exec exit status not zero. Status [-1]]的原因有很多,所以我们需要知道到底是shell脚本里面哪一步出错了,这样才能具体分析自己的问题所在,通过勾选如下图所示的“Verbose output in console”,可以在jenkins控制台Console Output看到更详细的项目构建过程中的日志信息。
最后我发现应该是kill进程的时候把grep也杀掉了,但是我用网上反向过滤的方法并没有用:ps -ef | grep ${TOMCAT_HOME}/ | grep -v grep | awk '{print $2}
从日志上看,jenkins运行shell的时候,还是会把grep一起kill掉,所以反向过滤无效(至于为什么我也不知道),于是只能采取仅返回第一个匹配结果的方法:ps -ef | grep -m 1 ${TOMCAT_HOME}/ | awk '{print $2},如此操作就可以精确kill掉tomcat进程
【备注】如果你之前没有设置过的话,jenkins控制台输出的中文一般都是乱码,解决办法:在jenkins安装目录/jenkins.xml中新增-Dfile.encoding=utf-8,如下
-Xrs -Xmx256m -Dfile.encoding=utf-8 -Dhudson.lifecycle=hudson.lifecycle.WindowsServiceLifecycle -jar “E:\Program Files\Jenkins\jenkins.war” --httpPort=8083 --webroot="%LocalAppData%\Jenkinswar"
然后重启jenkins服务:
停止jenkins服务:net stop jenkins
启动jenkins服务:net start jenkins