标准化启动脚本的构建与cronolog的日志分割

[先上标准化启动脚本:]

#!/bin/bash
# chkconfig: 2345 93 11
# description:$INS_APP Server
. /etc/rc.d/init.d/functions
JAVA_HOME="/usr/local/jdk"
PATH=/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:$JAVA_HOME/bin
export PATH

INS_APP="storm"
KEY="ice"
BASE_DIR="/data/www/apps/$INS_APP"
LOG_DIR="/data/log/$INS_APP"
LOG_FILE="/data/log/$INS_APP/$INS_APP.log"
prog=$INS_APP
pid_file=/var/run/$INS_APP.pid

function app_action(){
APP_PORT=$(netstat -tpln |grep $KEY |grep -v grep |awk '{print $4}' |awk  -F':' '{print $NF}')
APP_PID=$(ps aux |grep $KEY |grep -v grep  |awk '{print $2}')
}

[[ -d /data/log/$INS_APP/ ]]  || mkdir -p /data/log/$INS_APP/

start() {

#       JAVA_OPTS="-Xms1536M -Xmx1536M -Xss1M -XX:MaxPermSize=256M -XX:+UseParallelGC"
        if [[ ! -d  $BASE_DIR  ]];then
        echo "$INS_APP Directorg: $BASE_DIR isn't exist,exit!"
        exit
        fi 
        cd $BASE_DIR
        #nohup icebox --Ice.Config=config.icebox   >> $LOG_FILE 2>&1 &  
        nohup icebox --Ice.Config=config.icebox  2>&1 | /usr/local/sbin/cronolog  $LOG_DIR/$INS_APP.%Y-%m-%d.log &
        ret=$?
        if [ $ret -eq 0 ]; then
                action $"Starting $INS_APP: " /bin/true
                app_action
                echo $APP_PID  > $pid_file 
        else
                action $"Starting $INS_APP: " /bin/false
        fi
        chmod 755 /etc/init.d/$INS_APP  
        chkconfig --add   $INS_APP
        chkconfig --level 3  $INS_APP    on            
}

stop() {

        app_action
        if [[  -z $APP_PID  ]];then
        action $"Stopping $INS_APP: " /bin/false
        exit  
        fi   
        for i in $APP_PID
        do  
        kill -9 $i
        done 

        ret=$?
        if [ $ret -eq 0 ]; then
                action $"Stopping $INS_APP: " /bin/true
                rm -f $pid_file
        else
                action $"Stopping $INS_APP: " /bin/false
        fi
}

restart() {

        stop
        sleep 2
        start
}

case "$1" in
        start)
                start
                ;;
        stop)
                stop
                ;;
        status)
        status $prog         
                ;;
        restart)
                restart
                ;;
        *)
                echo $"Usage: $0 {start|stop|status|restart}"
                exit 1
esac


cronolog是[一款日志分割软件,以上范例日志文件将按天分割,每天产生一个新的日志文件。]

 nohup icebox --Ice.Config=config.icebox  2>&1 | /usr/local/sbin/cronolog  $LOG_DIR/$INS_APP.%Y-%m-%d.log &

 cronolog源码包安装: https://pan.baidu.com/s/1ntiF90X

文章作者 明哥
文章地址 https://www.pvcreate.com/index.php/archives/62/
创建时间 2014-06-17
关注订阅 微信订阅号
开源项目 https://gitee.com/lookingdreamer
工具市场 https://gitee.com/lookingdreamer/SPPPOTools
Shell相关