目录
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 "脚本执行完毕!"