分析
报错信息
场景
通过jenkins服务器远程执行jar包所在服务器的sh启动命令报错
jenkins-job配置设置
#! /bin/bash set +x
APP_HOME=${_path}/${_app}
APP_NAME=${_app}
pid=$( ps -ef|grep $APP_NAME | grep -v grep | awk '{print $2}' )
echo $pid
if [ -z "$pid" ]
then
echo "$APP_NAME not started"
else
kill -9 $pid
echo "$APP_NAME stopping"
fi
echo "$APP_NAME starting."
cd ${APP_NAME}
sh start.sh
核心就是启动目标服务器的start.sh文件
目标服务器设置
目标服务器格式如下
start.sh文件内容
nohup java -Xms256m -Xmx512m -Dfile.encoding=utf-8 -jar -Dspring.profiles.active=dev `pwd`/ztcx-monitor.jar > catalina.out 2>&1 &echo $! > pid
问题原因
直接执行脚本 sh start.sh 是没有问题的
但是在另一个服务器上,执行这个服务器上的脚本,就会出现
nohup: 无法运行命令"java": 没有那个文件或目录,解决方式,就是通过sh中需要以全限定路径执行JAVA命令,$JAVA_HOME环境变量/bin/java
直接指定到具体位置
启动sh文件命令
第一种:(要进到shell脚本所在文件夹中)
sh xx.sh
第二种:(要进到shell脚本所在文件夹中)
bash xx.sh
第三种:(要进到shell脚本所在文件夹中)
./xx.sh
第四种:
/全路径/xx.sh
结果
直接jenkins运行sh文件内容,并指定java命令及jar包全路径
cd $APP_HOME #jar包所在路径或者拼接在jar包前
nohup $JAVA_HOME/bin/java -jar -Xms256m -Xmx512m -Dfile.encoding=utf-8 -Dspring.profiles.active=dev ztcx-monitor.jar > catalina.out 2>&1 &echo $! > pid
评论区