blob: 79d7943136b6a7958e851480b8a53910a01a9bb0 [file] [log] [blame]
#!/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 Drillbit
#
# chkconfig: 345 85 15
# description: Drillbit
#
### BEGIN INIT INFO
# Provides: drillbit
# Short-Description: Drillbit
# Default-Start: 3 4 5
# Default-Stop: 0 1 2 6
# Required-Start: $syslog $remote_fs
# Required-Stop: $syslog $remote_fs
# Should-Start:
# Should-Stop:
### END INIT INFO
. /lib/lsb/init-functions
RETVAL_SUCCESS=0
STATUS_RUNNING=0
STATUS_DEAD=1
STATUS_DEAD_AND_LOCK=2
STATUS_NOT_RUNNING=3
STATUS_OTHER_ERROR=102
ERROR_PROGRAM_NOT_INSTALLED=5
ERROR_PROGRAM_NOT_CONFIGURED=6
RETVAL=0
SLEEP_TIME=5
PROC_NAME="java"
DAEMON="drillbit"
DESC="Drillbit"
EXEC_PATH="/opt/drill/bin/drillbit.sh"
SVC_USER=""
DAEMON_FLAGS=""
CONF_DIR="/etc/drill/conf"
PIDFILE="/opt/drill/drillbit.pid"
LOCKDIR="/var/lock/subsys"
LOCKFILE="$LOCKDIR/drillbit"
WORKING_DIR="~/"
install -d -m 0755 -o -g /var/run/drillbit 1>/dev/null 2>&1 || :
[ -d "$LOCKDIR" ] || install -d -m 0755 $LOCKDIR 1>/dev/null 2>&1 || :
start() {
[ -x $EXEC_PATH ] || exit $ERROR_PROGRAM_NOT_INSTALLED
[ -d $CONF_DIR ] || exit $ERROR_PROGRAM_NOT_CONFIGURED
log_success_msg "Starting ${DESC}: "
su -s /bin/bash $SVC_USER -c "cd $WORKING_DIR && $EXEC_PATH --config '$CONF_DIR' start $DAEMON_FLAGS"
# Some processes are slow to start
sleep $SLEEP_TIME
checkstatusofproc
RETVAL=$?
[ $RETVAL -eq $RETVAL_SUCCESS ] && touch $LOCKFILE
return $RETVAL
}
stop() {
log_success_msg "Stopping ${DESC}: "
start_daemon $EXEC_PATH --config "$CONF_DIR" stop $DAEMON_FLAGS
RETVAL=$?
[ $RETVAL -eq $RETVAL_SUCCESS ] && rm -f $LOCKFILE $PIDFILE
}
restart() {
stop
start
}
checkstatusofproc(){
pidofproc -p $PIDFILE $PROC_NAME > /dev/null
}
checkstatus(){
checkstatusofproc
status=$?
case "$status" in
$STATUS_RUNNING)
log_success_msg "${DESC} is running"
;;
$STATUS_DEAD)
log_failure_msg "${DESC} is dead and pid file exists"
;;
$STATUS_DEAD_AND_LOCK)
log_failure_msg "${DESC} is dead and lock file exists"
;;
$STATUS_NOT_RUNNING)
log_failure_msg "${DESC} is not running"
;;
*)
log_failure_msg "${DESC} status is unknown"
;;
esac
return $status
}
condrestart(){
[ -e $LOCKFILE ] && restart || :
}
check_for_root() {
if [ $(id -ur) -ne 0 ]; then
echo 'Error: root user required'
echo
exit 1
fi
}
service() {
case "$1" in
start)
check_for_root
start
;;
stop)
check_for_root
stop
;;
status)
checkstatus
RETVAL=$?
;;
restart)
check_for_root
restart
;;
condrestart|try-restart)
check_for_root
condrestart
;;
*)
echo $"Usage: $0 {start|stop|status|restart|try-restart|condrestart}"
exit 1
esac
}
service "$1"
exit $RETVAL