实现linux系统发布jar包项目脚本启动且日志按日期自动切割

 文章内容有些是引用了一些大神的,但是忘记是了来源。如果有雷同,请见谅

1 linux 脚本实现发布jar

#!/bin/bash

定义变量

要运行的jar包路径,加不加引号都行。 注意:等号两边 不能 有空格,否则会提示command找不到

JAR_NAME=项目名称-0.0.1-SNAPSHOT.jar

日志路径,加不加引号都行。 注意:等号两边 不能 有空格,否则会提示command找不到

LOG_PATH=service.log

如果输入格式不对,给出提示!

    tips() {
            echo ""
            echo "WARNING!!!......Tips, please use command: sh auto_service.sh [start|stop|restart|status].   For example: sh auto_service.sh start  "
            echo ""
            exit 1
    }

启动方法

    start() {
            # 重新获取一下pid,因为其它操作如stop会导致pid的状态更新        
            pid=`ps -ef | grep $JAR_NAME | grep -v grep | awk '{print $2}'`
            # -z 表示如果$pid为空时执行
            if [ -z $pid ]; then
            nohup java -jar /opt/$JAR_NAME > /opt/logs/$LOG_PATH 2>&1 &
            pid=`ps -ef | grep $JAR_NAME | grep -v grep | awk '{print $2}'`
            echo ""
            echo "Service ${JAR_NAME} is starting!pid=${pid}"
            echo "........................Start successfully!........................."
    else
            echo "" 
            echo "Service ${JAR_NAME} is already running,it's pid = ${pid}. If necessary, please use command: sh auto_service.sh restart."          
            echo ""
    fi

}

停止方法

    stop() {
            # 重新获取一下pid,因为其它操作如start会导致pid的状态更新       
            pid=`ps -ef | grep $JAR_NAME | grep -v grep | awk '{print $2}'`
            # -z 表示如果$pid为空时执行。 注意:每个命令和变量之间一定要前后加空格,否则会提示command找不到 
            if [ -z $pid ]; then
            echo ""        
            echo "Service ${JAR_NAME} is not running! It's not necessary to stop it!"               
            echo "" 
            else
            kill -9 $pid
            echo ""         
            echo "Service stop successfully!pid:${pid} which has been killed forcibly!"            
            echo "" 
            echo "" > $LOG_PATH
            fi
    }
    # 输出运行状态方法
    status() {
             # 重新获取一下pid,因为其它操作如stop、restart、start等会导致pid的状态更新     
             pid=`ps -ef | grep $JAR_NAME | grep -v grep | awk '{print $2}'`
              # -z 表示如果$pid为空时执行。注意:每个命令和变量之间一定要前后加空格,否则会提示command找不到        
              if [ -z $pid ];then
              echo ""        
              echo "Service ${JAR_NAME} is not running!"            
              echo ""       
              else
              echo ""        
              echo "Service ${JAR_NAME} is running. It's pid=${pid}"                
              echo ""       
              fi
    }
    # 重启方法
    restart() {
            echo "" 
            echo ".............................Restarting.............................."    
            echo "....................................................................."            
            # 重新获取一下pid,因为其它操作如start会导致pid的状态更新       
            pid=`ps -ef | grep $JAR_NAME | grep -v grep | awk '{print $2}'`
            # -z 表示如果$pid为空时执行。 注意:每个命令和变量之间一定要前后加空格,否则会提示command找不到 
            if [ ! -z $pid ]; then
            kill -9 $pid
            fi
            start
            echo "....................Restart successfully!..........................."
    }
    # 查看日志
    logs(){
          # 输出实时日志
         tail -n 100 -f /opt/logs/$LOG_PATH
    }
    # 根据输入参数执行对应方法,不输入则执行tips提示方法
    case "$1" in
            "start")
                    start
                    ;;
            "stop")
                    stop
                     ;;
            "status")
                    status
                    ;;
            "restart")
                    restart
                    ;;
            "logs")
                    logs
                    ;;
             *)
                    tips
                    ;;
    esac

2 linux 脚本实现日志按日期自动切割

复制日志文件内容到新的文件夹中

cp /opt/nohup.out /opt/service_date -d '-1 days' +%Y%m%d.log
#清空默认日志输出文件
echo “” > /opt/nohup.out

查找并清理不需要的文件

find /opt/logs/ -mtime +7 -name “*” - exec rm -rf {} ;

你可能感兴趣的:(命令)