| #!/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 |