BIGTOP-1283. bump Solr version to 4.6.0
[bigtop.git] / bigtop-packages / src / common / flume / flume-node.init
1 #!/bin/bash
2 #
3 # Licensed to the Apache Software Foundation (ASF) under one or more
4 # contributor license agreements.  See the NOTICE file distributed with
5 # this work for additional information regarding copyright ownership.
6 # The ASF licenses this file to You under the Apache License, Version 2.0
7 # (the "License"); you may not use this file except in compliance with
8 # the License.  You may obtain a copy of the License at
9 #
10 #     http://www.apache.org/licenses/LICENSE-2.0
11 #
12 # Unless required by applicable law or agreed to in writing, software
13 # distributed under the License is distributed on an "AS IS" BASIS,
14 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 # See the License for the specific language governing permissions and
16 # limitations under the License.
17 #
18 # Starts a Flume NG node
19 #
20 # chkconfig: 345 90 10
21 # description: Flume NG node
22 #
23 ### BEGIN INIT INFO
24 # Provides:          flume-node
25 # Required-Start:    $remote_fs
26 # Should-Start:
27 # Required-Stop:     $remote_fs
28 # Should-Stop:
29 # Default-Start:     3 4 5
30 # Default-Stop:      0 1 2 6
31 # Short-Description: Flume NG node
32 ### END INIT INFO
33
34 . /lib/lsb/init-functions
35
36 if [ -f /etc/default/flume-node ] ; then
37   . /etc/default/flume-node
38 fi
39
40 # Autodetect JAVA_HOME if not defined
41 if [ -e /usr/libexec/bigtop-detect-javahome ]; then
42   . /usr/libexec/bigtop-detect-javahome
43 elif [ -e /usr/lib/bigtop-utils/bigtop-detect-javahome ]; then
44   . /usr/lib/bigtop-utils/bigtop-detect-javahome
45 fi
46
47 STATUS_RUNNING=0
48 STATUS_DEAD=1
49 STATUS_DEAD_AND_LOCK=2
50 STATUS_NOT_RUNNING=3
51
52 ERROR_PROGRAM_NOT_INSTALLED=5
53
54 FLUME_LOG_DIR=/var/log/flume
55 FLUME_CONF_DIR=/etc/flume/conf
56 FLUME_RUN_DIR=/var/run/flume
57 FLUME_HOME=/usr/lib/flume
58 FLUME_USER=flume
59
60 FLUME_LOCK_DIR="/var/lock/subsys"
61 LOCKFILE="${FLUME_LOCK_DIR}/flume-node"
62 desc="Flume NG node daemon"
63
64 FLUME_CONF_FILE=${FLUME_CONF_FILE:-${FLUME_CONF_DIR}/flume.conf}
65 EXEC_PATH=/usr/bin/flume-ng
66 FLUME_PID_FILE=${FLUME_RUN_DIR}/flume-node.pid
67
68 # These directories may be tmpfs and may or may not exist
69 # depending on the OS (ex: /var/lock/subsys does not exist on debian/ubuntu)
70 for dir in "$FLUME_RUN_DIR" "$FLUME_LOCK_DIR"; do
71   [ -d "${dir}" ] || install -d -m 0755 -o $FLUME_USER -g $FLUME_USER ${dir}
72 done
73
74 DEFAULT_FLUME_NODE_NAME="agent"
75 FLUME_NODE_NAME=${FLUME_NODE_NAME:-${DEFAULT_FLUME_NODE_NAME}}
76 FLUME_SHUTDOWN_TIMEOUT=${FLUME_SHUTDOWN_TIMEOUT:-60}
77
78 start() {
79   [ -x $exec ] || exit $ERROR_PROGRAM_NOT_INSTALLED
80
81   checkstatus
82   status=$?
83   if [ "$status" -eq "$STATUS_RUNNING" ]; then
84     exit 0
85   fi
86
87   log_success_msg "Starting $desc (flume-node): "
88   /bin/su -s /bin/bash -c "/bin/bash -c 'echo \$\$ > ${FLUME_PID_FILE} && exec ${EXEC_PATH} node --conf $FLUME_CONF_DIR --conf-file $FLUME_CONF_FILE --name $FLUME_NODE_NAME >>${FLUME_LOG_DIR}/flume-node.log 2>&1' &" $FLUME_USER
89   RETVAL=$?
90   [ $RETVAL -eq 0 ] && touch $LOCKFILE
91   return $RETVAL
92 }
93
94 stop() {
95   if [ ! -e $FLUME_PID_FILE ]; then
96     log_failure_msg "Flume node is not running"
97     exit 0
98   fi
99
100   log_success_msg "Stopping $desc (flume-node): "
101
102   FLUME_PID=`cat $FLUME_PID_FILE`
103   if [ -n $FLUME_PID ]; then
104     kill -TERM ${FLUME_PID} &>/dev/null
105     for i in `seq 1 ${FLUME_SHUTDOWN_TIMEOUT}` ; do
106       kill -0 ${FLUME_PID} &>/dev/null || break
107       sleep 1
108     done
109     kill -KILL ${FLUME_PID} &>/dev/null
110   fi
111   rm -f $LOCKFILE $FLUME_PID_FILE
112   return 0
113 }
114
115 restart() {
116   stop
117   start
118 }
119
120 checkstatus(){
121   pidofproc -p $FLUME_PID_FILE java > /dev/null
122   status=$?
123
124   case "$status" in
125     $STATUS_RUNNING)
126       log_success_msg "Flume NG node is running"
127       ;;
128     $STATUS_DEAD)
129       log_failure_msg "Flume NG node is dead and pid file exists"
130       ;;
131     $STATUS_DEAD_AND_LOCK)
132       log_failure_msg "Flume NG node is dead and lock file exists"
133       ;;
134     $STATUS_NOT_RUNNING)
135       log_failure_msg "Flume NG node is not running"
136       ;;
137     *)
138       log_failure_msg "Flume NG node status is unknown"
139       ;;
140   esac
141   return $status
142 }
143
144 condrestart(){
145   [ -e ${LOCKFILE} ] && restart || :
146 }
147
148 case "$1" in
149   start)
150     start
151     ;;
152   stop)
153     stop
154     ;;
155   status)
156     checkstatus
157     ;;
158   restart)
159     restart
160     ;;
161   condrestart|try-restart)
162     condrestart
163     ;;
164   *)
165     echo $"Usage: $0 {start|stop|status|restart|try-restart|condrestart}"
166     exit 1
167 esac
168
169 exit $RETVAL