#!/bin/bash
#启动jar包的相对路径,如jar放在当前sh文件目录下
# 定义默认值
APP_NAME=""
RUN_ENV="dev"
# 解析命令行参数
while getopts "j:p:" opt; do
case $opt in
j) APP_NAME=$OPTARG;;
p) RUN_ENV=$OPTARG;;
\?) echo "无效的选项: -$OPTARG" >&2
exit 1;;
esac
done
echo "APP_NAME=$APP_NAME"
echo "RUN_ENV=$RUN_ENV"
#重定向输出的日志文件路径
LOG_FILE=./nohup.log
# 检查进程是否已经在运行
pid=$(ps -ef | grep $APP_NAME | grep -v grep | grep -v start.sh | awk '{print $2}')
#echo "进程已经在运行,进程ID:$pid 尝试杀死进程"
if [ -n "$pid" ]; then
echo "进程已经在运行,进程ID:$pid"
echo "杀死进程..."
kill -9 $pid
echo "进程已经被杀死"
fi
#判断jar包文件是否存在
if test -e $APP_NAME
then
echo "$APP_NAME 文件存在,正在启动..."
# 具体启动命令,可更改添加参数
echo "java -Xms200m -Xmx200m -jar $APP_NAME --spring.profiles.active=$RUN_ENV > $LOG_FILE&"
nohup java -Xms200m -Xmx200m -jar $APP_NAME --spring.profiles.active=$RUN_ENV > $LOG_FILE&
echo '$APP_NAME 启动命令开始执行...,打印启动日志'
tail -f -n 1000 ./nohup.log
else
echo '$APP_NAME 文件不存在!'
fi
!!!start.sh文件必须和jar同目录!!!
执行命令:
sh ./start.sh -j xxx.jar-p test
-j 指定jar,必填
-p 指定运行环境,可不填,默认dev