分享一个启动(更新)java包的sh脚本

分享一个启动(更新)java包的sh脚本

大家好我是小星,今天分享一个启动java的脚本

#!/bin/sh
# 指定脚本使用的解释器为/bin/sh。

#定义一个变量enable_JAVAOPTS,用于控制是否启用Java选项。值为1表示启用,值为0表示禁用。
#eanble java Options(1->on , 0->off)
enable_JAVAOPTS=1

#获取脚本所在目录的绝对路径,并赋值给SH_DIR变量。
SH_DIR=$(cd `dirname $0`;pwd)
#查找SH_DIR父目录下最新的.jar文件,并赋值给latestjar变量。ls -lt按照时间排序,grep '.jar'筛选出.jar文件,awk '{print $9}'获取文件名,sed -n '1p'取出第一个文件名。
latestjar=`ls $SH_DIR/.. -lt | grep '.jar'| awk '{print $9}' | sed -n '1p'`
#检查当前系统中是否有已经运行的与latestjar相关的Java进程,并获取进程ID。ps -ef列出所有进程,grep $latestjar筛选出包含latestjar的进程,grep -v grep排除grep本身的进程,awk '{print $2}'获取进程ID。
process_exists=`ps -ef|grep $latestjar|grep -v grep|awk '{print $2}'`
#定义一个函数parse_jvm_options,用于解析JVM选项文件中的选项。文件每行以“-”开头的选项被提取并以空格分隔。
parse_jvm_options() {
  if [ -f "$1" ]; then
    echo "$(grep "^-" "$1" | tr '\n' ' ')"
  fi
}
#如果环境变量JVM_OPTIONS未定义,则在SH_DIR父目录下的config目录中查找名为jvm.options的文件,并将其路径赋值给JVM_OPTIONS变量。
if [ -z "$JVM_OPTIONS" ]; then
    for jvm_options in $SH_DIR/../config/jvm.options
    do
      if [ -r "$jvm_options" ]; then
            JVM_OPTIONS=$jvm_options
            break
        fi
    done
fi
#如果enable_JAVAOPTS为1,则调用parse_jvm_options函数解析JVM_OPTIONS文件,并将解析的选项赋值给JAVA_OPTS变量;否则,将JAVA_OPTS变量置为空。
if [ "$enable_JAVAOPTS" -eq 1 ]; then
    JAVA_OPTS="$(parse_jvm_options "$JVM_OPTIONS") $JAVA_OPTS"
else
    JAVA_OPTS=""
fi

if [ -x "$JAVA_HOME/bin/java" ]; then
    JAVA="$JAVA_HOME/bin/java"
else
    JAVA=`which java`
fi
#检查JAVA_HOME环境变量指向的Java二进制文件是否存在并可执行。如果存在,则将其路径赋值给JAVA变量;否则,使用which java命令查找系统中的Java二进制文件路径。
if [ ! -x "$JAVA" ]; then
	#如果JAVA变量指向的Java二进制文件不可执行,则输出错误信息并退出脚本。
    echo "Could not find any executable java binary. Please install java in your PATH or set JAVA_HOME"
    exit 1
fi
#如果process_exists变量非空,则强制杀死与latestjar相关的运行中的Java进程
if [ -n "${process_exists}" ];then
  kill -9 ${process_exists}
fi
#切换到SH_DIR的父目录。
cd $SH_DIR/../;
# 输出启动信息,包括要启动的.jar文件名。
echo 'start:'$latestjar
nohup $JAVA $JAVA_OPTS -XX:+HeapDumpOnOutOfMemoryError -jar $SH_DIR/../$latestjar > /dev/null 2>&1 &

在jar文件同级文件新建bin 文件夹 将 此脚本命令文件放入bin目录下即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值