• Java项目生产启动、关闭脚本


    1.直接启动

    #!/bin/bash
    #这里可替换为你自己的执行程序,其他代码无需更改
    APP_NAME=XXXX-api-1.0.jar
    
    #使用说明,用来提示输入参数
    usage() {
     echo "Usage: sh 脚本名.sh [start|stop|restart|status]"
     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 -jar $APP_NAME > /dev/null 2>&1 &
     nohup java -jar $APP_NAME -config.spring=./application.properties &
     echo "${APP_NAME} start success"
    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
    }
    
    #根据输入参数,选择执行对应方法,不输入则执行使用说明
    case "$1" in
    "start")
     start
     ;;
    "stop")
     stop
     ;;
    "status")
     status
     ;;
    "restart")
     restart
     ;;
    *)
     usage
     ;;
    esac

     2.以服务的方式启动

    # 授权可执行
    chmod +x XXX-api-1.0.jar
    # 创建软链接
    ln -s /home/xxx/XXXX-api/XXXX-api-1.0.jar /etc/init.d/syt-XXXX-api
    # 启停服务
    service xxx-XXXX-api start|stop|restart
    
    # 使用service xx start命令后可能出现Unable to find Java需添加java软链接
    ln -s /usr/local/jdk1.8.0_231/bin/java /sbin/java

    3.将sql日志写入文件

    <?xml version="1.0" encoding="UTF-8"?>
    <configuration>
        <!--在properties文件中找到对应的配置项-->
        <springProperty scope="context" name="logging.path" source="logging.path"/>
        <springProperty scope="context" name="logging.level" source="logging.level"/>
    
        <!--控制台日志输出-->
        <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
            <encoder>
                <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %level %logger{50} - %msg%n</pattern>
                <charset>UTF-8</charset>
            </encoder>
        </appender>
    
        <!--普通文件日志输出-->
        <appender name="ALL" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <append>true</append>
            <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
                <!--正式上线可启用(不打印sql日志)-->
                <!--<level>${logging.level}</level>-->
                <level>debug</level>
            </filter>
            <file>${logging.path}/all.log</file>
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                <fileNamePattern>${logging.path}/all.%d.%i.log</fileNamePattern>
                <!--日志文件保留天数-->
                <maxHistory>30</maxHistory>
                <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                    <maxFileSize>10MB</maxFileSize>
                </timeBasedFileNamingAndTriggeringPolicy>
            </rollingPolicy>
            <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
                <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %level - %msg%n</pattern>
                <charset>UTF-8</charset>
            </encoder>
        </appender>
        <!--错误文件日志输出-->
        <appender name="ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <append>true</append>
            <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
                <level>error</level>
            </filter>
            <file>${logging.path}/error.log</file>
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                <fileNamePattern>${logging.path}/error.%d.%i.log</fileNamePattern>
                <!--日志文件保留天数-->
                <maxHistory>30</maxHistory>
                <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                    <maxFileSize>10MB</maxFileSize>
                </timeBasedFileNamingAndTriggeringPolicy>
            </rollingPolicy>
            <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
                <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %level %logger{50} - %msg%n</pattern>
                <charset>UTF-8</charset>
            </encoder>
        </appender>
    
        <root level="${logging.level}">
            <appender-ref ref="STDOUT"/>
            <appender-ref ref="ALL"/>
            <appender-ref ref="ERROR"/>
        </root>
    
    </configuration>
    View Code
  • 相关阅读:
    个人知识库建设:搜集、归类、整理、提纯
    vue学习:定义全局变量并使用
    flask学习:配置https请求
    flask项目部署到云服务器,并通过域名访问后端服务
    微信小程序开发学习系列
    shell数组
    RabbitMQ安装与基本原理
    bootstrap强化模态窗口插件
    多选框插件
    2022全国卷乙卷文科数学解析版|图片
  • 原文地址:https://www.cnblogs.com/newAndHui/p/12200109.html
Copyright © 2020-2023  润新知