zoukankan      html  css  js  c++  java
  • springboot的jar在linux运行

    springboot项目使用maven打包成jar包,如何在linux优雅部署?平时启动项目使用java -jar命令,关闭程序需要查询pid再查杀进程,这样都太麻烦了,今天发现一个博客已经写好的脚本,如下:

    实现以下命令:

    • 启动 : start
    • 停止 :stop
    • 重启 : restart
    • 运行状态 :status
    • 查看实时日志 : log
    • 备份 : backup

    备注:脚本会屏蔽部分敏感词,估针对实际情况进行修改即可使用。

    脚本代码

    脚本内容如下,复制修改后保存即可使用(如 : xxx.sh),脚本已有相应的注释应该好理解。

    #!/bin/bash 
    #这里可替换为jar包名字
    APP_NAME=xxx-1.0.jar
    #根据实际情况修改参数
    JVM="-server -Xms2g -Xmx2g -Xmn512m -XX:PermSize=128M -XX:MaxNewSize=128m -XX:MaxPermSize=25zh6m -Xss256k  -Djava.awt.headless=true -XX:+CMSClassUnloadingEnabled -XX:+CMSPermGenSweepingEnabled -Xloggc:/logs/xxx-server/GC/xxx-gc.log"
    #APPFILE_PATH="-Dspring.config.location=/usr/local/config/application.properties"
    #使用说明,用来提示输入参数 
    usage() { 
        echo "Usage: sh 执行脚本.sh [start|stop|restart|status|log|backup]" 
        exit 1 
    } 
    #检查程序是否在运行 
    is_exist(){ 
        pid=`ps -ef|grep $APP_NAME|grep -v grep|awk '{print $2}' ` 
        #如果不存在返回1,存在返回0 
        if [ -z "${pid}" ]; then 
            return 1 
        else 
            return 0 
        fi 
    } 
    
    #启动方法 
    start(){ 
        is_exist 
        if [ $? -eq "0" ]; then 
            echo "${APP_NAME} is already running. pid=${pid} ." 
        else 
            #nohup java $JVM -jar $APPFILE_PATH $APP_NAME > /dev/null 2>&1 
                    #后台启动jar包,且控制环境变量,根据实际情况修改吧。
            nohup java $JVM -jar $APP_NAME --spring.profiles.active=prod > /dev/null 2>&1 & 
        fi
    } 
    
    #停止方法 
    stop(){ 
        is_exist 
        if [ $? -eq "0" ]; then 
            kill -9 $pid 
        else 
            echo "${APP_NAME} is not running" 
        fi 
    } 
    
    #输出运行状态 
    status(){ 
        is_exist 
        if [ $? -eq "0" ]; then 
            echo "${APP_NAME} is running. Pid is ${pid}" 
        else 
            echo "${APP_NAME} is NOT running." 
        fi 
    } 
    #重启 
    restart(){ 
        stop 
        start 
    } 
    
    #日志
    log(){
            # 输出实时日志
        tail -n 100 -f /logs/fdc-server/fdc-server.log
    }
    
    #备份
    backup(){
            #根据需求自定义备份文件路径。
        BACKUP_PATH=/usr/local/webapps/backup/xxx-server/
            #获取当前时间作为备份文件名
        BACKUP_DATE=`date +"%Y%m%d(%H:%M:%S)"`
        echo 'backup file ->'$BACKUP_PATH$BACKUP_DATE'.jar'
            #备份当前jar包
        cp -r /usr/local/webapps/$APP_NAME  $BACKUP_PATH$BACKUP_DATE'.jar'
    }
    
    #根据输入参数,选择执行对应方法,不输入则执行使用说明 
    case "$1" in 
        "start") 
            start 
            ;; 
        "stop") 
            stop 
            ;; 
        "status") 
            status 
            ;; 
        "restart") 
            restart 
            ;; 
        "log") 
            log 
            ;; 
        "backup") 
            backup 
            ;; 
        *) 
    usage 
    ;; 
    esac

    备注:脚本中“xxx”相应的位置都需要进行修改。(当然可以做成参数来控制,多项目可使用,但觉得没必要,请自行修改吧。)

    运行脚本

    修改完脚本后,上传到相应位置及文件权限。
    查看脚本有哪些方法:

    sh xxx.sh

    如下图:


     
     

    具体命令如下:

    cd  /xxxx/xxx
    #启动
    sh xxx.sh start
    #停止
    sh xxx.sh stop
    #重启
    sh xxx.sh restart
    #运行状态
    sh xxx.sh status
    #查看实时日志
    sh xxx.sh log
    #备份
    sh xxx.sh backup

    至此结束,可根据自己需求去修改。

    转载
    链接:https://www.jianshu.com/p/7effaacb435d

  • 相关阅读:
    java学习day51--DB旅游生态系统-项目搭建
    java学习day50--Spring Boot发送邮件任务
    java学习day49--yaml语法以及注入
    java学习day49--JSON扩展(详细)
    java学习day49--JS数组遍历
    java学习day49-基于AJAX实践操作(活动模块)
    java学习day48--Ajax技术--原生
    denied: requested access to the resource is denied
    VMware虚拟机网络适配器三种网络连接模式
    MySQL8.0.19最新版本rpm包和源码包百度地址
  • 原文地址:https://www.cnblogs.com/SmilingEye/p/11341595.html
Copyright © 2011-2022 走看看