Skip to content
Snippets Groups Projects
dm-daq-web-service 2.96 KiB
Newer Older
#!/bin/bash

#
# dm-daq-web-service
#
# Starts the DM WebService daemon
#
# chkconfig: 345 98 98
# description: controls DM Web Service daemon

### BEGIN INIT INFO
# Provides: dm-daq-web-service
# Required-Start: $local_fs $network
# Required-Stop: $local_fs $network
# Default-Start:  2 3 4 5
# Default-Stop: 0 1 6
# Description: Controls DM DAQ Web Service daemon
### END INIT INFO

# Source function library.
. /etc/rc.d/init.d/functions

# Arguments
ACTION=$1
DM_DB_NAME=$2
DM_DB_NAME=${DM_DB_NAME:=dm}

# Set root to default if needed.
MY_DIR=`dirname $0` && cd $MY_DIR && MY_DIR=`pwd`
if [ -z "${DM_ROOT_DIR}" ]; then
    DM_ROOT_DIR=$MY_DIR/../..
fi

# Source environment file.
DM_USER=`id -nu`
DM_HOST=`hostname -s`
DM_ENV_FILE=${DM_ROOT_DIR}/setup.sh
if [ ! -f ${DM_ENV_FILE} ]; then
    echo "Environment file ${DM_ENV_FILE} does not exist." 
    exit 2
fi
. ${DM_ENV_FILE} > /dev/null

mkdir -p ${DM_INSTALL_DIR}/var/run
mkdir -p ${DM_INSTALL_DIR}/var/log

DM_DAEMON_NAME="${DM_DB_NAME}.DaqWebService"
DM_DAEMON_CMD=${DM_ROOT_DIR}/sbin/daqWebService.py
DM_PID_FILE=${DM_INSTALL_DIR}/var/run/${DM_DB_NAME}.daq-web-service.pid
DM_CONFIG_FILE=${DM_INSTALL_DIR}/etc/${DM_DB_NAME}.daq-web-service.conf
DM_DAEMON_START_ARGS="-d -p $DM_PID_FILE --config-file $DM_CONFIG_FILE"

# Determine su command
SU=su
if [ -x /sbin/runuser ]; then
    SU=runuser
fi

RETVAL=0
start() {
    # Check if service is already running
    status -p $DM_PID_FILE > /dev/null 2>&1
    if [ $? -eq 0 ]; then
        PID=`cat $DM_PID_FILE`
        echo $"$DM_DAEMON_NAME daemon is already running (pid: $PID)."	
        RETVAL=1
        return $RETVAL
    fi
    echo -n $"Starting $DM_DAEMON_NAME daemon: "	
    # Check if we're a privileged user
    if [ `id -u` = 0 -a ${DM_USER} != "root" ]; then
        $SU -m -c "${DM_DAEMON_CMD} ${DM_DAEMON_START_ARGS}" ${DM_USER}
    else
        ${DM_DAEMON_CMD} ${DM_DAEMON_START_ARGS}
    fi
	RETVAL=$?
	[ $RETVAL -eq 0 ] &&  success $"$DM_DAEMON_NAME startup" || failure $"$DM_DAEMON_NAME startup"
    echo
    return $RETVAL
}

stop() {
    # Check if service is already running
    status -p $DM_PID_FILE > /dev/null 2>&1
    if [ $? -ne 0 ]; then
        echo $"$DM_DAEMON_NAME daemon is not running."	
        RETVAL=1
        return $RETVAL
    fi
    echo -n $"Stopping $DM_DAEMON_NAME daemon: "
    PID=`cat $DM_PID_FILE`
    kill $PID
	RETVAL=$?
    sleep 1
    # Make sure we kill the process always, regardless of 
    # what happened with first kill
    kill -KILL $PID > /dev/null 2>&1
	[ $RETVAL -eq 0 ] && rm -f $DM_PID_FILE && success $"$DM_DAEMON_NAME shutdown" || failure $"$DM_DAEMON_NAME shutdown"
	echo
    return $RETVAL
}

restart() {
    stop
    start
}

case "$ACTION" in
    start)
        start
    ;;
    stop)
        stop
    ;;
    restart)
        restart
    ;;
    status)
        status -p $DM_PID_FILE "$DM_DAEMON_NAME" 2> /dev/null
        RETVAL=$?
    ;;
    *)
        echo $"Usage: $0 {start|stop|status|restart}"
        RETVAL=2
esac

exit $RETVAL