java - 为什么詹金斯在构建后无法启动java进程
问题描述
我正在使用这个 shell 脚本来启动 java 进程:
#!/usr/bin/env bash
# 当使用未初始化的变量时,程序自动退出
# 也可以使用命令 set -o nounset
set -u
# 当任何一行命令执行失败时,自动退出脚本
# 也可以使用命令 set -o errexit
set -e
set -x
JAVA_HOME="/usr"
APP_HOME="/Users/dabaidabai/.jenkins/workspace/soa-robot/soa-robot-service/build/libs"
APP_NAME="soa-robot-service-1.0.0-SNAPSHOT.jar"
PID=`ps -ef|grep -w ${APP_NAME}|grep -v grep|cut -c 9-15`
if [[ ${PID} -gt 1 ]]; then
kill -9 ${PID}
sleep 5
else
echo "Process not found"
fi
count=`ps -ef | grep ${APP_NAME} | grep -v "grep" | wc -l`
if [[ ${count} -lt 1 ]]; then
cd ${APP_HOME}
nohup ${JAVA_HOME}/bin/java -Xmx440M -Xms128M -jar \
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/opt \
-Xdebug -Xrunjdwp:transport=dt_socket,suspend=n,server=y,address=5009 \
${APP_HOME}/${APP_NAME} >> /dev/null &
sleep 5
else
echo "process aready exists!"
exit 1
fi
并像这样在詹金斯执行这个脚本:
/bin/bash ${WORKSPACE}/script/upgrade.sh
这是詹金斯执行日志输出:
BUILD SUCCESSFUL in 19s
37 actionable tasks: 8 executed, 29 up-to-date
+ /bin/bash /Users/dabaidabai/.jenkins/workspace/soa-robot/script/upgrade.sh
+ JAVA_HOME=/usr
+ APP_HOME=/Users/dabaidabai/.jenkins/workspace/soa-robot/soa-robot-service/build/libs/
+ APP_NAME=soa-robot-service-1.0.0-SNAPSHOT.jar
++ ps -ef
++ grep -w soa-robot-service-1.0.0-SNAPSHOT.jar
++ grep -v grep
++ cut -c 9-15
+ PID=
+ [[ '' -gt 1 ]]
+ echo 'Process not found'
Process not found
++ ps -ef
++ grep soa-robot-service-1.0.0-SNAPSHOT.jar
++ grep -v grep
++ wc -l
+ count=' 0'
+ [[ 0 -lt 1 ]]
+ cd /Users/dabaidabai/.jenkins/workspace/soa-robot/soa-robot-service/build/libs/
+ sleep 5
+ nohup /usr/bin/java -Xmx440M -Xms128M -jar -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/opt -Xdebug -Xrunjdwp:transport=dt_socket,suspend=n,server=y,address=5009 /Users/dabaidabai/.jenkins/workspace/soa-robot/soa-robot-service/build/libs/soa-robot-service-1.0.0-SNAPSHOT.jar
Process leaked file descriptors. See https://jenkins.io/redirect/troubleshooting/process-leaked-file-descriptors for more information
Finished: SUCCESS
但是当我登录服务器并发现进程没有启动时,为什么会发生这种情况?当我在服务器终端执行此脚本时,它可以启动进程成功:
nohup /usr/bin/java -Xmx440M -Xms128M -jar -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/opt -Xdebug -Xrunjdwp:transport=dt_socket,suspend=n,server=y,address=5009 /Users/dabaidabai/.jenkins/workspace/soa-robot/soa-robot-service/build/libs//soa-robot-service-1.0.0-SNAPSHOT.jar &
解决方案
推荐阅读
- vue.js - 在 Vue3 中使用过滤器但无法读取 globalProperties
- python - 如何解决 Python Pylint 安装错误
- omnipay - Paystack Gateway:格式是授权承载[密钥]
- google-app-engine - (gcloud.app.deploy) HTTPError 403:
没有 storage.objects.get 访问 Google Cloud Storage 对象的权限 - mysql - 如何在 MySQL 5.7 的 LEFT JOIN 中排序
- angular - 如何从 NgRx 存储中获取数据到我的组件中并调度相关操作?
- laravel - 登录后返回调用页面而不是仪表板(Laravel 8)
- c# - 如何在 Unity 中获取分配给游戏对象的所有材质
- javascript - Reactjs 无限滚动组件总是渲染新数据
- reactjs - 反应:TypeError:this.props.users.map 不是函数