java - Tomcat 在从 jenkins 执行 shell 重新启动后停止

标签 java linux shell tomcat jenkins

我已将 jenkins 配置为删除 tomcat 现有工作区,将现有构建复制到 tomcat 工作区,然后重新启动 tomcat。我使用 jenkins 的 execute shell。脚本如下:

#!/bin/sh
version=1.0.0-BUILD-SNAPSHOT
build_no=${BUILD_NUMBER}

if [ $build_no ]
then
 cd ~
 TOMCAT_WEBAPPS=`locate apache-tomcat | grep apache-tomcat | grep webapps | head -n 1 | awk '{ print $1 }'`
 rm $TOMCAT_WEBAPPS/app-api.war
 rm -rf $TOMCAT_WEBAPPS/app-api/*
 rmdir $TOMCAT_WEBAPPS/app-api/
 wget http://jenkins/job/project/ws/api/build/api-$version-$build_no-bin.zip
 unzip -j connectedcare-api-$version-$build_no-bin.zip
 rm api-$version-$build_no-bin.zip
 cp api-$version.war $TOMCAT_WEBAPPS/app-api.war
 rm api-$version.war
else
 echo "Please specify the jenkins build number as an argument: "$0" <build_number>"
 exit
fi

echo "Restarting tomcat ..."

TOMCAT_PID=`ps -ef | grep tomcat | grep java | awk ' { print $2 } '`

if [ $TOMCAT_PID ]
then
  echo "Tomcat is running with PID" $TOMCAT_PID

  echo "Forced tomcat stop with PID" $TOMCAT_PID
  kill -9 $TOMCAT_PID
  echo "Tomcat was stoped"
fi

echo "Starting tomcat"

TOMCAT_STARTUP_FILE=`locate apache-tomcat | grep apache-tomcat | grep startup.sh | awk ' { print $1 } '`

$TOMCAT_STARTUP_FILE

TOMCAT_PID=`ps -ef | grep tomcat | grep java | awk ' { print $2 } '`

if [ $TOMCAT_PID ]
then
  echo "Tomcat is running with PID" $TOMCAT_PID
else
  echo "Failed to start tomcat."
fi

运行构建时,结果如下:

Restarting tomcat ...
Tomcat PID 10152
Tomcat is running with PID 10152
Forced tomcat stop with PID 10152
Tomcat was stoped
Starting tomcat
Tomcat started.
Tomcat is running with PID 14781

问题是当我查看 linux 机器 tomcat 没有运行时,日志中也没有任何内容,所以我无法弄清楚我做错了什么。你能给我一些建议吗?

谢谢

最佳答案

我设法为此找到了解决方案。 Jenkins 操作名为 BUILD_ID 的环境变量。所以在重新启动 tomcat 之前,需要以下代码行。

导出 BUILD_ID=dontKillMe

关于java - Tomcat 在从 jenkins 执行 shell 重新启动后停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36283430/

相关文章:

linux - 根据文件夹名称移动文件夹

arrays - 如何在shell中将字符串拆分为两个单独的变量

linux - 在 bash 中读取文件的前三行

Java:如何向通过java.awt.frame实现的GUI窗口添加滚动条?

java - 归并排序还是数据库?

java - 为什么 Object 实例(为 null)上的 toString() 不抛出 NPE?

linux - 如何修复损坏的/usr/bin/ld?

c++ - 如何修复这个简单的 Makefile 错误?

shell - 如何在每行的开头添加数字?

java - Eclipse:工作区中项目的更改未对导入项目的文件夹进行更改