【Spring Boot】如何在Linux系统中快速启动Spring Boot的jar包

  1. 在Linux系统中先安装java的JDK

  2. 然后编写下列service.sh脚本,并根据自己的需求只需要修改export的log_path、exec_cmd参数即可
    1.

    bash 复制代码
    # 配置运行日志输出的路径
    export log_path=/usr/local/project/study-pro/logs
    # 当前服务运行的脚本命令
    export exec_cmd="nohup /usr/local/project/openjdk-8/bin/java -jar /usr/local/project/study-pro/study-pro-0.0.1-SNAPSHOT.jar"
    # 获取脚本所在的目录
    CUR_DIR=$(dirname $0)
    # 进入到该目录运行,这样可以规避绝对路径的问题,你的脚本迁移到任何目录都可以正常运行
    cd ${CUR_DIR}
    
    # 该函数running正常退出,not running则退出非0值
    check_server_is_running() {
        [[ ! -f "pid" ]] && touch pid
        
        # 获取
        PID=$(cat pid)
        
        # 首先判断pid是否存在
        if [ "${PID}" = "" ]
        then
            echo "server is not running."
            return 1
        fi
        
        # 再判断指定的PID是否在当前目录运行,防止因历史异常原因遗留了失效PID,正好该PID又被其他进程占用,造成误杀。
        if [[ -d /proc/${PID}/cwd ]] && ls -ahl /proc/${PID}/cwd | grep -q "${CUR_DIR}"
        then
            echo "server is running."
            return 0
        else
            # 清空失效的进程号并异常退出
            echo "" > pid
            return 1
        fi
    }
    
    start() {
        # 启动前判断日志目录是否存在,不存在就创建
        [[ ! -d "${log_path}" ]] && mkdir -p ${log_path}
        
        # 启动服务
        ${exec_cmd} > ${log_path}/start.log 2>&1 &
        
        # 保存PID,以供stop使用
        PID=$!
        echo "server start succ, PID=${PID}!"
        echo "${PID}" > pid
    }
    
    
    
    stop() {
        # get pid
        PID=$(cat pid)
        kill -9 ${PID}
    }
    
    
    case C"$1" in
        Cstart)
            # ||:前一个运行失败后,才运行后面一个脚本。单进程执行。若遇到第一个执行成功的脚本后,后面的脚本不再执行。
            check_server_is_running || start
            echo "start done."
            ;;
        Cstop)
            # &&:前一个运行成功后,才运行下一个。单进程执行,若中途某个脚本执行报错,后面的脚本不再执行
            check_server_is_running && stop
            echo "stop done."
            ;;
        Crestart)
            check_server_is_running && stop 
            check_server_is_running || start 
            echo "restart done."
            ;;
        C*)
            echo "Usage: $0 {start|stop|restart}"
            ;;
    esac
  3. 如果脚本没有可执行权限,需要先赋权再执行命令
    1.

    bash 复制代码
    chmod -R +x service.sh
  4. 在脚本的目录中执行下列命令即可正常运行、停止、重启相应的Spring Boot服务
    1.

    |----------------------|------|
    | 执行脚本 | 说明 |
    | ./service.sh start | 服务启动 |
    | ./service.sh stop | 服务停止 |
    | ./service.sh restart | 服务重启 |

  5. 当前示例执行服务启动命令,可以看出服务已经可以正常启动并访问了
    1.

    bash 复制代码
    ./service.sh start
相关推荐
j7~3 分钟前
【Linux 系统】二十.进程间通信(共享内存、消息队列、信号量)
linux·运维·消息队列·共享内存·信号量·system v
YMWM_8 分钟前
python-venv虚拟环境
linux·开发语言·python
折哥的程序人生 · 物流技术专研16 分钟前
Java 23 种设计模式:从踩坑到精通 | 备忘录模式 —— 快照与撤销,给对象装一个“后悔药”
java·设计模式·备忘录模式·行为型模式·java设计模式·从踩坑到精通·撤销重做
万俟淋曦19 分钟前
【ROS2】动作通信机制 Action 代码示例(C++版)
linux·人工智能·机器人
ikun_文23 分钟前
Java里面异常Exception体系知识点
java
不负岁月无痕24 分钟前
STL -- C++ 红黑树封装 Map 和 Set
java·c语言·开发语言·c++·面试
小园子的小菜28 分钟前
Java核心基础:反射与泛型底层原理及实战用法详解
java·开发语言
淘源码A35 分钟前
多院区集团化云PACS系统源码,原生兼容国产软硬件环境
java·云计算·源码·saas·pacs·医学影像系统
裤兜里有钱38 分钟前
关于Xshell连接虚拟机Linux失败的主要原因
linux·运维·服务器
何中应1 小时前
主流 OpenJDK 发行版下载安装
java·oracle·jdk·openjdk