部署Spring Boot Jar包程序的Shell脚本

部署Spring Boot Jar包程序的Shell脚本,包括备份、优雅关闭和启动等步骤。

#!/bin/bash

# 应用名称
APP_NAME="myapp"

# 应用Jar包名称及路径
APP_JAR="$APP_NAME.jar"
APP_PATH="/path/to/app"

# JVM参数(根据实际情况修改)
JAVA_OPTS="-server -Xms512m -Xmx1024m"

# 进程ID文件名称及路径
PID_FILE="$APP_NAME.pid"

# 备份目录名称及路径
BACKUP_DIR="backup"
BACKUP_PATH="/path/to/backup/$BACKUP_DIR"

# 备份应用文件
echo "正在备份应用文件..."
if [ ! -d "$BACKUP_PATH" ]; then
    mkdir -p $BACKUP_PATH
fi
cp $APP_PATH/$APP_JAR $BACKUP_PATH/$APP_JAR.`date +"%Y%m%d%H%M%S"`
echo "应用文件备份完成。"

# 检查是否已经启动
if [ -f "$PID_FILE" ]; then
    PID=`cat $PID_FILE`
    ps -p $PID > /dev/null 2>&1
    if [ $? -eq 0 ]; then
        echo "应用已经在运行中,进程ID为:$PID"
        exit 1
    else
        echo "PID文件存在,但进程不存在!清理PID文件并启动应用......"
        rm -f $PID_FILE
    fi
fi

# 启动应用
echo "开始启动应用..."
nohup java $JAVA_OPTS -jar $APP_PATH/$APP_JAR > /dev/null 2>&1 &
PID=$!
if [ $? -eq 0 ]; then
    echo $PID > $PID_FILE
    echo "应用启动成功,进程ID为:$PID"
else
    echo "应用启动失败,请查看日志以获取更多信息。"
fi

# 优雅关闭应用
function stopApplication {
    echo "开始关闭应用..."
    PID=`cat $PID_FILE`
    kill $PID > /dev/null 2>&1
    for ((i=0; i<30; i++)); do
        ps -p $PID > /dev/null
        if [ $? -eq 0 ]; then
            echo "等待应用关闭...第 $i 秒"
            sleep 1
        else
            echo "应用关闭成功!"
            break
        fi
    done

    # 检查是否停止成功
    ps -p $PID > /dev/null
    if [ $? -eq 0 ]; then
        echo "无法正常关闭应用,进行强制关闭..."
        kill -9 $PID > /dev/null 2>&1
    fi
}

# 捕获CTRL+C信号
trap stopApplication INT

# 永远运行脚本,直到收到信号退出
while true; do
  sleep 1
done

这个Shell脚本首先备份应用文件,然后检查应用是否已经在运行中,如果是,则输出错误信息并退出;否则,它将启动应用并将进程ID写入PID文件中。同时,它还设置了一个优雅关闭函数和一个捕获CTRL+C信号的陷阱,来处理应用的优雅关闭。

这个Shell脚本只是一个示例。可根据实际情况对其进行修改和适应。

你可能感兴趣的:(spring,boot,jar,linux)