当前位置:首页>Linux>【java】linux服务器上重启springboot项目打成的jar包的脚本

【java】linux服务器上重启springboot项目打成的jar包的脚本

  • 2026-10-11 08:40:41
【java】linux服务器上重启springboot项目打成的jar包的脚本

点击蓝字 关注我

分享一个linux服务器上重启springboot项目打成的jar包的脚本,重要操作都有注释,脚本代码如下:

#!/bin/bash# 功能:启动/停止/重启/查看指定JAR包的运行状态# ======================== 配置项(根据实际情况修改)========================# Java可执行文件路径JAVA_HOME="/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/bin/java"# JAR包完整路径JAR_PATH="/Users/long/IdeaProjects/b-demo/target/b-demo.jar"# 日志文件路径(自动生成,可自定义)LOG_FILE="/Users/long/software/code/logs/b-demo.log"# 进程标识(用于区分同名JAR包,建议用JAR包名称)APP_NAME="b-demo"# JVM启动参数(可根据需要调整,如堆内存)JVM_OPTS="-Xms512m -Xmx1024m -Dfile.encoding=UTF-8"# ==========================================================================# 检查Java路径是否存在check_java() {    if [ ! -f "${JAVA_HOME}" ]; then        echo "错误:Java路径 ${JAVA_HOME} 不存在,请检查配置!"        exit 1    fi}# 检查JAR包路径是否存在check_jar() {    if [ ! -f "${JAR_PATH}" ]; then        echo "错误:JAR包路径 ${JAR_PATH} 不存在,请检查配置!"        exit 1    fi}# 获取进程IDget_pid() {    # 通过JAR包名称过滤进程,排除grep自身    PID=$(ps -ef | grep "${APP_NAME}.jar" | grep -v grep | awk '{print $2}')}# 启动服务start() {    check_java    check_jar    get_pid    if [ -n "${PID}" ]; then        echo "${APP_NAME} 已启动,进程ID:${PID}"    else        # 后台启动JAR包,输出日志到指定文件,&表示后台运行        nohup ${JAVA_HOME} ${JVM_OPTS} -jar ${JAR_PATH} > ${LOG_FILE} 2>&1 &        sleep 2 # 等待进程启动        get_pid        if [ -n "${PID}" ]; then            echo "${APP_NAME} 启动成功,进程ID:${PID}"        else            echo "${APP_NAME} 启动失败,请查看日志 ${LOG_FILE}"        fi    fi}# 停止服务stop() {    get_pid    if [ -n "${PID}" ]; then        echo "正在停止 ${APP_NAME}(进程ID:${PID})..."        kill -15 ${PID} # 优雅停止(SIGTERM)        sleep 3        # 检查是否还在运行,若在则强制杀死        get_pid        if [ -n "${PID}" ]; then            echo "优雅停止失败,强制杀死进程 ${PID}..."            kill -9 ${PID}            sleep 1            get_pid            if [ -z "${PID}" ]; then                echo "${APP_NAME} 强制停止成功"            else                echo "${APP_NAME} 停止失败,请手动检查进程"            fi        else            echo "${APP_NAME} 优雅停止成功"        fi    else        echo "${APP_NAME} 未运行"    fi}# 查看状态status() {    get_pid    if [ -n "${PID}" ]; then        echo "${APP_NAME} 正在运行,进程ID:${PID}"    else        echo "${APP_NAME} 已停止"    fi}# 重启服务restart() {    echo "正在重启 ${APP_NAME}..."    stop    start}# 帮助信息usage() {    echo "使用说明:$0 [start|stop|restart|status]"    echo "  start   - 启动服务(后台运行)"    echo "  stop    - 停止服务"    echo "  restart - 重启服务"    echo "  status  - 查看服务状态"    exit 1}# 主逻辑if [ $# -ne 1 ]; then    usageficase "$1" in    start)        start        ;;    stop)        stop        ;;    restart)        restart        ;;    status)        status        ;;    *)        usage        ;;esacexit 0

执行用重启命令就行

1.如果jar包没有启动,打印信息如下

2.如果jar包正在运行,先优雅停止,再启动,则打印信息如下

如果觉得文章内容不错,免费点个赞、推荐、分享一下,如果想第一时间收到推送,可以星标⭐下。更多精选干货,可以点击下方卡片进行查阅!
如果有技术问题,可以在文章底部留言
 点赞    推荐   分享

最新文章

随机文章