欢迎光临
我们一直在努力

Java JAR包一键部署脚本

📋 概述

这是一个用于 Linux 环境下自动化部署 Java JAR 包的 Shell 脚本,支持停止旧进程、启动新进程,并包含进程检测和超时处理机制。


⚙️ 配置参数

使用前只需修改以下三个参数:

参数说明示例值
​JAR_PATH JAR 包所在目录路径 ​/usr/local/project/java
​JAR_NAME JAR 包文件名 ​system-service.jar
​LOG_FILE 日志输出文件名 ​system.log

🔄 执行流程

┌─────────────────────────────────────┐
│ 开始更新部署 │
└──────────────┬──────────────────────┘

┌─────────────────────────────────────┐
│ 检查 JAR 文件是否存在 │
│ (不存在则退出) │
└──────────────┬──────────────────────┘

┌─────────────────────────────────────┐
│ 停止旧进程 │
│ • 查找运行中的进程 PID │
│ • 发送 kill 信号 │
│ • 等待最多 30 秒 │
│ • 超时则强制终止 (kill -9) │
└──────────────┬──────────────────────┘

┌─────────────────────────────────────┐
│ 启动新进程 │
│ • 使用 nohup 后台运行 │
│ • 等待 2 秒验证启动状态 │
│ • 输出新进程 PID │
└──────────────┬──────────────────────┘

┌─────────────────────────────────────┐
│ 更新完成 │
└─────────────────────────────────────┘


📝 完整脚本

#!/bin/bash

# ============================================
# Java JAR 包自动部署脚本
# ============================================

# ———- 配置区域(按需修改)———-
JAR_PATH="/usr/local/project/java"
JAR_NAME="system-service.jar"
LOG_FILE="system.log"
FULL_JAR_PATH="${JAR_PATH}/${JAR_NAME}"

# 检查新Jar包是否存在
if [ ! -f "$FULL_JAR_PATH" ]; then
echo "错误:未找到Jar文件 $FULL_JAR_PATH"
exit 1
fi

# 停止旧进程函数
stop_old_process() {
# 查找正在运行的Jar进程
PID=$(ps -ef | grep $JAR_NAME | grep -v grep | awk '{print $2}')

if [ -z "$PID" ]; then
echo "未找到正在运行的进程"
else
echo "正在停止进程 $PID …"
kill $PID
# 等待进程结束(最多30秒)
TIMEOUT=30
while [ $TIMEOUT -gt 0 ]; do
if ps -p $PID > /dev/null; then
sleep 1
((TIMEOUT))
else
break
fi
done

# 强制终止(如果正常终止失败)
if ps -p $PID > /dev/null; then
echo "强制终止进程 $PID"
kill -9 $PID
fi
echo "进程已停止"
fi
}

# 启动新进程函数
start_new_process() {
echo "正在启动新进程…"
cd $JAR_PATH || exit 1
nohup java -jar $JAR_NAME > $LOG_FILE 2>&1 &

# 验证是否启动成功
sleep 2
NEW_PID=$(ps -ef | grep $JAR_NAME | grep -v grep | awk '{print $2}')
if [ -n "$NEW_PID" ]; then
echo "启动成功!进程ID: $NEW_PID"
echo "日志输出: $JAR_PATH/$LOG_FILE"
else
echo "启动失败,请检查日志"
exit 1
fi
}

# 主执行流程
echo "====== 开始更新部署 ======"
stop_old_process
start_new_process
echo "====== 更新完成 ======"


🚀 使用方法

1. 创建脚本文件

vim deploy.sh
# 粘贴上述脚本内容

2. 赋予执行权限

chmod +x deploy.sh

3. 执行部署

./deploy.sh


📤 输出示例

正常部署:

====== 开始更新部署 ======
正在停止进程 12345 …
进程已停止
正在启动新进程…
启动成功!进程ID: 12350
日志输出: /usr/local/project/java/system.log
====== 更新完成 ======

首次部署(无旧进程):

====== 开始更新部署 ======
未找到正在运行的进程
正在启动新进程…
启动成功!进程ID: 12350
日志输出: /usr/local/project/java/system.log
====== 更新完成 ======


⚠️ 注意事项

  • 权限要求:确保执行用户对 JAR_PATH 目录有读写权限
  • Java 环境:需提前配置好 Java 运行环境(java 命令可用)
  • 日志覆盖:每次启动会覆盖原有日志文件,如需保留历史日志请修改 LOG_FILE 命名规则
  • 端口冲突:确保应用所需端口未被占用
  • 进程匹配:如有多个同名 JAR 运行,脚本会匹配到所有进程
  • 赞(0)
    未经允许不得转载:171主机测评 » Java JAR包一键部署脚本
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址