单服务启动jar包 shell脚本

该Bash脚本用于管理服务的启动、停止、重启和查询状态。它读取第二个命令行参数作为服务路径,从中提取服务名称,并设置JVM选项。脚本还会检查服务的日志目录并创建如果不存在。服务启动时,会使用nohup启动Java进程,并将日志输出到指定文件。
#!/usr/bin/env bash

INPUT=$2
FILE_PATH=`readlink -f ${INPUT}`
SERVICE=${INPUT##*/}
SERVICE_NAME=${SERVICE%.*}
DEPLOY_DIR=`pwd`
JVM_OPTS="-server -Xms512m -Xmx1024m"

if [[ "$1" = "" ]];
then
    echo -e "\033[0;31m 未输入操作名 \033[0m  \033[0;34m {start|stop|restart|status} \033[0m"
    exit 1
fi

if [[ "$SERVICE" = "" ]];
then
    echo -e "\033[0;31m 未输入应用名 \033[0m"
    exit 1
fi

LOGS_DIR="$DEPLOY_DIR/logs/$SERVICE_NAME"
echo "$LOGS_DIR"
if [[ ! -d "$LOGS_DIR" ]]; then
        mkdir -p ${LOGS_DIR}
fi

LOG_PATH="$LOGS_DIR/stdout.out"
pid=0

start()
{
	checkPid
	if [[ ! -n "$pid" ]]; then
    BUILD_ID=dontKillMe  nohup /home/jdk/jdk1.8.0_144/bin/java -Duser.timezone=GMT+08 -Dspring.profiles.active=dev ${JVM_OPTS} -jar  ${FILE_PATH} >> ${LOG_PATH} 2>&1 &
    echo "$SERVICE_NAME is starting you can check the $LOG_PATH"
  else
      echo "$SERVICE_NAME is runing PID: $pid"
  fi
}

checkPid()
{
    pid=`ps -ef |grep ${FILE_PATH} |grep -v grep |awk '{print $2}'`
}

stop()
{
	checkPid
    if [[ ! -n "$pid" ]]; then
     echo "$SERVICE_NAME not runing"
    else
      echo "$SERVICE_NAME stop..."
      kill -9 ${pid}
    fi
}

restart()
{
	stop
	sleep 2
	start
}

status()
{
   checkPid
   if [[ ! -n "$pid" ]]; then
     echo "$SERVICE_NAME not runing"
   else
     echo "$SERVICE_NAME runing PID: $pid"
   fi
}

case $1 in
          start) start;;
          stop)  stop;;
          restart)  restart;;
          status)  status;;
              *)  echo "require start|stop|restart|status"  ;;
esac

启动

sh  脚本文件全称  start   jar包全称  

### 编写适用于Windows的Shell脚本启动Java JAR文件 对于希望简化在Windows环境下启动多个Java应用程序过程的情况,可以通过批处理脚本(Batch Script)来实现这一目标。尽管严格意义上来说这不是Unix/Linux下的Shell脚本,但在功能上能够满足需求。 #### 创建批处理脚本(.bat) 为了达到备份旧版JAR并部署新版的目的,可以按照如下方式构建批处理文件: ```batch @echo off setlocal enabledelayedexpansion :: 设置工作路径和版本号等参数 set WORK_DIR=D:\jar\ set BACKUP_DIR=%WORK_DIR%backup\ if not exist %BACKUP_DIR% mkdir %BACKUP_DIR% for %%F in ("%WORK_DIR%\*.jar") do ( set FILE_NAME=%%~nxF move "%%F" "%BACKUP_DIR%!FILE_NAME!.bak" ) copy D:\path_to_new_jars\springApplicationA.jar %WORK_DIR% timeout /t 5 > nul start "" "java" -jar "%WORK_DIR%springApplicationA.jar" timeout /t 10 > nul copy D:\path_to_new_jars\springApplicationB.jar %WORK_DIR% timeout /t 5 > nul start "" "java" -jar "%WORK_DIR%springApplicationB.jar" ``` 此段代码实现了先定义好工作目录以及备份位置;接着检查是否存在指定的备份文件夹不存在就创建它;遍历当前目录中的所有`.jar`文件并将它们移动到备份文件夹中去,在文件名后面加上`.bak`作为扩展名表示这是一个备份副本[^1]。 之后通过`copy`指令将新的JAR文件从源地址拷贝至目标地址,并设置了一定时间间隔确保每一步骤顺利完成后再继续下一步的操作。最后利用`start`命令配合`java -jar`选项来异步开启两个不同的Spring Boot应用实例。 需要注意的是,上述例子假设所有的JAR文件都位于同一级目录内,并且新版本的应用程序也存放在固定的路径之下。实际环境中可能还需要根据具体情况调整这些设定值。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值