美文网首页
SpringBoot多实例shell脚本

SpringBoot多实例shell脚本

作者: 惜时流光沿途留殇 | 来源:发表于2021-04-14 22:52 被阅读0次

    脚本内容

    APP_NAME=xxx-0.0.1-SNAPSHOT.jar
    APP_PORT=$2
    #使用说明,用来提示输入参数
    usage() {
    echo "Usage: sh 执行脚本.sh [start|stop|restart|status] [端口]"
    exit 1
    }
    
    #检查程序是否在运行
    is_exist(){
    pid=`ps -ef|grep $APP_NAME|grep $APP_PORT|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 -Dserver.port=$APP_PORT -Dlogging.path=${APP_PORT}-log -jar $APP_NAME > /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
    }
    
    #根据输入参数,选择执行对应方法,不输入则执行使用说明
    case "$1" in
    "start")
    if [ "$APP_PORT" = "" ];then
    usage
    else
    start
    fi
    ;;
    "stop")
    if [ "$APP_PORT" = "" ];then
    usage
    else
    stop
    fi
    ;;
    "status")
    if [ "$APP_PORT" = "" ];then
    usage
    else
    status
    fi
    ;;
    "restart")
    if [ "$APP_PORT" = "" ];then
    usage
    else
    restart
    fi
    ;;
    *)
    usage
    ;;
    esac
    
    

    yml配置

    logging:
      config:
        classpath: logback.xml
      path: log
    

    修改logback.xml文件,将LOG_PATH的value中改成${LOG_PATH:-.}

    <!-- Logback configuration. See http://logback.qos.ch/manual/index.html -->
    <configuration debug="false" scan="true"
        scanPeriod="10 seconds">
        <property name="LOG_PATH" value="${LOG_PATH:-.}"></property>
    
        <appender name="STDOUT"
            class="ch.qos.logback.core.ConsoleAppender">
            <encoder>
                <Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
                </Pattern>
            </encoder>
        </appender>
    
        <appender name="INFO_FILE"
            class="ch.qos.logback.core.rolling.RollingFileAppender">
            <File>${LOG_PATH}/info.log</File>
            <rollingPolicy
                class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                <fileNamePattern>${LOG_PATH}/info-%d{yyyy-MM-dd}.log.%i
                </fileNamePattern>
                <timeBasedFileNamingAndTriggeringPolicy
                    class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                    <maxFileSize>100MB</maxFileSize>
                </timeBasedFileNamingAndTriggeringPolicy>
                <maxHistory>30</maxHistory>
                <totalSizeCap>900MB</totalSizeCap>
            </rollingPolicy>
            <layout class="ch.qos.logback.classic.PatternLayout">
                <Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
                </Pattern>
            </layout>
        </appender>
    
        <appender name="ERROR_FILE"
            class="ch.qos.logback.core.rolling.RollingFileAppender">
            <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
                <level>ERROR</level>
            </filter>
            <File>${LOG_PATH}/error.log</File>
            <rollingPolicy
                class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                <fileNamePattern>${LOG_PATH}/error-%d{yyyy-MM-dd}.log.%i
                </fileNamePattern>
                <timeBasedFileNamingAndTriggeringPolicy
                    class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                    <maxFileSize>100MB</maxFileSize>
                </timeBasedFileNamingAndTriggeringPolicy>
                <maxHistory>30</maxHistory>
                <totalSizeCap>900MB</totalSizeCap>
            </rollingPolicy>
            <layout class="ch.qos.logback.classic.PatternLayout">
                <Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
                </Pattern>
            </layout>
        </appender>
    
        <root level="INFO">
            <appender-ref ref="STDOUT" />
            <appender-ref ref="INFO_FILE" />
            <appender-ref ref="ERROR_FILE" />
        </root>
    </configuration>
    

    格式不对有^M$可用以下命令查看和修复

    vim -b XXX.sh
    sed -i 's/\r//g' XXX.sh
    

    相关文章

      网友评论

          本文标题:SpringBoot多实例shell脚本

          本文链接:https://www.haomeiwen.com/subject/jskrlltx.html