#!/bin/bash # # Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # # Starts a Flume NG node # # chkconfig: 345 90 10 # description: Flume NG node # ### BEGIN INIT INFO # Provides: flume-node # Required-Start: $remote_fs # Should-Start: # Required-Stop: $remote_fs # Should-Stop: # Default-Start: 3 4 5 # Default-Stop: 0 1 2 6 # Short-Description: Flume NG node ### END INIT INFO . /lib/lsb/init-functions if [ -f /etc/default/flume-node ] ; then . /etc/default/flume-node fi # Autodetect JAVA_HOME if not defined if [ -e /usr/libexec/bigtop-detect-javahome ]; then . /usr/libexec/bigtop-detect-javahome elif [ -e /usr/lib/bigtop-utils/bigtop-detect-javahome ]; then . /usr/lib/bigtop-utils/bigtop-detect-javahome fi STATUS_RUNNING=0 STATUS_DEAD=1 STATUS_DEAD_AND_LOCK=2 STATUS_NOT_RUNNING=3 ERROR_PROGRAM_NOT_INSTALLED=5 FLUME_LOG_DIR=/var/log/flume FLUME_CONF_DIR=/etc/flume/conf FLUME_RUN_DIR=/var/run/flume FLUME_HOME=/usr/lib/flume FLUME_USER=flume FLUME_LOCK_DIR="/var/lock/subsys" LOCKFILE="${FLUME_LOCK_DIR}/flume-node" desc="Flume NG node daemon" FLUME_CONF_FILE=${FLUME_CONF_FILE:-${FLUME_CONF_DIR}/flume.conf} EXEC_PATH=/usr/bin/flume-ng FLUME_PID_FILE=${FLUME_RUN_DIR}/flume-node.pid # These directories may be tmpfs and may or may not exist # depending on the OS (ex: /var/lock/subsys does not exist on debian/ubuntu) for dir in "$FLUME_RUN_DIR" "$FLUME_LOCK_DIR"; do [ -d "${dir}" ] || install -d -m 0755 -o $FLUME_USER -g $FLUME_USER ${dir} done DEFAULT_FLUME_NODE_NAME="agent" FLUME_NODE_NAME=${FLUME_NODE_NAME:-${DEFAULT_FLUME_NODE_NAME}} start() { [ -x $exec ] || exit $ERROR_PROGRAM_NOT_INSTALLED checkstatus status=$? if [ "$status" -eq "$STATUS_RUNNING" ]; then exit 0 fi log_success_msg "Starting $desc (flume-node): " /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 RETVAL=$? [ $RETVAL -eq 0 ] && touch $LOCKFILE return $RETVAL } stop() { if [ ! -e $FLUME_PID_FILE ]; then log_failure_msg "Flume node is not running" exit 0 fi log_success_msg "Stopping $desc (flume-node): " FLUME_PID=`cat $FLUME_PID_FILE` if [ -n $FLUME_PID ]; then kill -TERM ${FLUME_PID} &>/dev/null sleep 5 kill -KILL ${FLUME_PID} &>/dev/null fi rm -f $LOCKFILE $FLUME_PID_FILE return 0 } restart() { stop start } checkstatus(){ pidofproc -p $FLUME_PID_FILE java > /dev/null status=$? case "$status" in $STATUS_RUNNING) log_success_msg "Flume NG node is running" ;; $STATUS_DEAD) log_failure_msg "Flume NG node is dead and pid file exists" ;; $STATUS_DEAD_AND_LOCK) log_failure_msg "Flume NG node is dead and lock file exists" ;; $STATUS_NOT_RUNNING) log_failure_msg "Flume NG node is not running" ;; *) log_failure_msg "Flume NG node status is unknown" ;; esac return $status } condrestart(){ [ -e ${LOCKFILE} ] && restart || : } case "$1" in start) start ;; stop) stop ;; status) checkstatus ;; restart) restart ;; condrestart|try-restart) condrestart ;; *) echo $"Usage: $0 {start|stop|status|restart|try-restart|condrestart}" exit 1 esac exit $RETVAL