一、前言
昨天在配置生产环境一个发布脚本时遇到问题,Jenkins调用远程机器Shell脚本,Shell脚本的作用主要是停止Tomcat进程,然后复制打包文件到指定目录,最后启动Tomcat,启动Tomcat一直不成功,日志也不报任何错误,折腾快一整天时间。
二、配置说明
Jenkins配置如下:
Shell脚本如下:
shell脚本中代码使用 bin/startup.sh去启动,,死活启动不了,跟踪到tomcat的catalina.sh中发现是被调用执行的,但tomcat进程就是启动不了。开始一直以为是环境变量的配置,代码中加了 source /root/.bash_profile也没解决问题,后来将bin/startup.sh 改也 nohup bin/startup.sh > /dev/null 2>&1 &终于可以正常启动tomcat,这就特别奇怪了,我另外一个项目也是用bin/startup.sh启动tomcat没有任何问题,最后怀疑这个项目用 bin/startup.sh 启动不成功,是因为tomcat中修改了一段配置
CATALINA_OUT=/mnt/logs/adm/catalina.out,这样在使用脚本启动时会一直有日志输出到控制台,然后Jenkins就会卡住,Tomcat就启动不了。
网上找到一句话:
当通过Jenkins构建完后推送到业务服务器,在执行脚本时,脚本中命令无法正常退出(一直在往控制台输出日志),构建前台任务就会卡住。