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