Liunx 批量启动Java jar包,并备份,输出日志

目录

1 使用说明:

 2 脚本代码


1 使用说明:

在脚本同级目录下新建update文件夹,放入jar包,执行脚本,即可启动文件夹下所有jar包;

脚本功能:
自动备份到back文件夹;
日志输出到logs文件夹;
#启动后删除update文件夹下jar包

 2 脚本代码

#!/bin/bash

echo "开始执行脚本..."

# 导出 JAVA_HOME 和 JAVA_BIN
echo "导出 JAVA_HOME 和 JAVA_BIN"
export JAVA_HOME
export JAVA_BIN=$JAVA_HOME/bin

# 创建 update、logs、back、jar 四个目录
echo "创建 update、logs、back、jar 四个目录"
mkdir -p update logs back jar

sleep 2

# 获取当前时间,格式为 yyyyMMddHHmmss
echo "获取当前时间,格式为 yyyyMMddHHmmss"
now=$(date +"%Y%m%d%H%M%S")

# 复制 jar 文件夹中的内容到 back 文件夹中
echo "复制 jar 文件夹中的内容到 back 文件夹中"
cp -r jar back/${now}_jar

# 停止 Java 应用程序
echo "停止 Java 应用程序"
stop_java_app() {
  # 从第一个参数中获取应用程序名称
  app_name=$1

  # 查找正在运行的 Java 进程的 PID
  pid=$(ps -ef | grep $app_name | grep -v grep | awk '{print $2}')

  if [ -z "$pid" ]; then
    echo "The $app_name application is not running."
  else
    # 停止 Java 进程
    echo "Stopping the $app_name application..."
    kill $pid
    echo "The $app_name application has been stopped."
  fi
}

# 进入 update 目录
echo "进入 update 目录"
cd update

echo "开始遍历 jar 包..."

# 遍历 update 目录下的所有 jar 包
for jar_file in *.jar
do
  # 获取 jar 文件的文件名(不包含路径和扩展名)
  jar_name=$(basename "$jar_file" .jar)

  # 停止 Java 应用程序
  echo "停止 Java 应用程序 $jar_file"
  stop_java_app $jar_file

  echo "启动项目 $jar_file!"

  # 启动 jar 文件,并将日志输出到 logs 文件夹中
  echo "启动 jar 文件,并将日志输出到 logs 文件夹中"
  nohup $JAVA_BIN/java -Xms256m -Xmx512m -jar "$jar_file" >"../logs/${jar_name}_${now}.out" 2>&1 &

  echo "日志输出到:${jar_name}_${now}.out"

  # 复制 update 文件夹中的文件到 jar 文件夹中,并替换已有的文件
  echo "复制 update 文件夹中的文件到 jar 文件夹中,并替换已有的文件"
  cp -f $jar_file ../jar
done

# 删除 update 目录
#echo "删除 update 目录"
#cd ../
#rm -rf update
#mkdir update

echo "脚本执行完毕!"

你可能感兴趣的:(python,pycharm,开发语言)