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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
#!/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是[一款日志分割软件,以上范例日志文件将按天分割,每天产生一个新的日志文件。]

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

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

坚持原创技术分享,您的支持将鼓励我继续创作!