栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

JAR包自动启动脚本

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JAR包自动启动脚本

#!/bin/bash

# 脚本中只要出现执行不是true的语句,就退出不再往下执行
set -e

# 导入环境变量
export jar_PATH=/data/web
export APP_PATH=/home/

# 判断老的进程是否存在,若存在就杀掉
killjar()
{
    pid=`ps -ef|grep supplier-center |grep java |awk '{print $2}'`
     echo "supplier-center Id list :$pid"
    if [ "$pid" = "" ]
    then
        echo "no supplier-center pid alive"
    else
        kill -9 $pid
    fi
}

# 调用函数
killjar

# 判断老的jar包是否存在,若存在就删除
[ -f $APP_PATH/supplier-center-1.0.0-SNAPSHOT.jar ] && 
rm -rf $APP_PATH/supplier-center-1.0.0-SNAPSHOT.jar

# 更新最新的jar包
mv $jar_PATH/supplier-center-1.0.0-SNAPSHOT.jar $APP_PATH

# 重新启动
nohup java -jar $APP_PATH/supplier-center-1.0.0-SNAPSHOT.jar > 
$APP_PATH/admin.log &

# sleep 10秒, 等待java进程完成起来
sleep 10s

echo 'Start success!'

sh -x supplier-center.sh   #检查脚本是否有问题

#!/bin/bash

cd ${WORKSPACE}/supplier-center/target
scp supplier-center-1.0.0-SNAPSHOT.jar 192.168.0.29:/data/web
ssh 192.168.0.29  "bash /data/sh/supplier-center.sh"

判断都有if语句,否则jenkins会执行不了,还有一个巨坑

#!/bin/bash

# 脚本中只要出现执行不是true的语句,就退出不再往下执行
set -e

# 导入环境变量
export jar_PATH=/data/web
export APP_PATH=/opt

# 判断老的jar包是否存在,若存在就删除
if [ -f $APP_PATH/antSale ]; then
  rm -rf $APP_PATH/antSale
fi

#echo $?
#echo "###end###"
# 更新最新的jar包
if [ -f $jar_PATH/antSale ]; then
  mv $jar_PATH/antSale $APP_PATH
fi
#echo $?

jar包引用本地同级配置文件config,解决每次合并分支更改配置文件问题,相对路径可以加个config自动识别配置文件

nohup java -jar -Dspring.config.location=/绝对路径/application.properties /xxx/xxx.jar > /xxx/xxx.log &

#!/bin/bash

# 脚本中只要出现执行不是true的语句,就退出不再往下执行
set -e

# 导入环境变量
export jar_PATH=/data/web
export APP_PATH=/home

# 判断老的进程是否存在,若存在就杀掉
killjar()
{
    pid=`ps -ef|grep supplier-center |grep java |awk '{print $2}'`
     echo "supplier-center Id list :$pid"
    if [ "$pid" = "" ]
    then
        echo "no supplier-center pid alive"
    else
        kill -9 $pid
    fi
}

# 调用函数
killjar

# 判断老的jar包是否存在,若存在就删除
if [ -f $APP_PATH/supplier-center/supplier-center-1.0.0-SNAPSHOT.jar ]; then
  rm -rf $APP_PATH/supplier-center/supplier-center-1.0.0-SNAPSHOT.jar
fi

# 更新最新的jar包
if [ -f $jar_PATH/supplier-center-1.0.0-SNAPSHOT.jar ]; then
mv $jar_PATH/supplier-center-1.0.0-SNAPSHOT.jar $APP_PATH/supplier-center
fi

# 重新启动
#cd $APP_PATH/supplier-center && 
#nohup java -jar /home/supplier-center/supplier-center-1.0.0-SNAPSHOT.jar > supplier-center.log &
nohup java -jar -Dspring.config.location=/home/supplier-center/config/application.yml /home/supplier-center/supplier-center-1.0.0-SNAPSHOT.jar > supplier-center.log &
# sleep 10秒, 等待java进程完成起来
sleep 10s
echo 'Start success!'
远程(jenkins)调用shell 不能正常结束
例如:nohup java -jar start.jar >log.log 2>&1 &。

但是在jenkins远程调用,会把日志打印在jenkins控制台中,导致任务不能结束。

通过排查,在程序运行前使用了cd命令,先cd到目录,在运行命令

cd /service && nohup java -jar start.jar >log.log 2>&1 &

改为绝对路径,去掉cd命令,程序正常了

脚本如下:

#!/bin/bash

set -x

kill -9 `ps -ef |grep start|grep -v grep|awk -F " " '{print$2}'`

source /etc/profile

nohup java -jar /service/start.jar  -Xms500m -Xmx500m -Xmn250m -Xss256k -server -XX:+HeapDumponOutOfMemoryError > /service/Log.log  2>&1 &

echo "starting service..."

sleep 10

#根据重启后是否有当前应用判断启动是否成功

pid=$(ps -ef |grep start|grep -v grep|awk -F " " '{print$2}')

#echo $pid

if [ -z $pid ];then

  echo "启动失败"

  exit 1

else

  echo  $pid  "SUCCESS"

fi

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/591077.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号