#!/bin/sh # # dpnsdaemon Start/Stop dpnsdaemon # # chkconfig: - 91 19 # description: DPNS server daemon # ### BEGIN INIT INFO # Provides: dpnsdaemon # Required-Start: $remote_fs $syslog # Required-Stop: $remote_fs $syslog # Default-Stop: 0 1 2 3 4 5 6 # Short-Description: DPNS server daemon # Description: DPNS server daemon ### END INIT INFO # # $Id: dpnsdaemon.scripts.mysql 3691 2010-07-14 11:45:06Z baud $ # # @(#)$RCSfile: dpnsdaemon.scripts.mysql,v $ $Revision: 3691 $ $Date: 2010-07-14 13:45:06 +0200 (Wed, 14 Jul 2010) $ CERN/IT/ADC/CA Jean-Damien Durand # # ## PLEASE USE sysconfig FILE TO CHANGE THESE ENVIRONMENT VARIABLES # DPNSDAEMONLOGFILE=/var/log/dpns/log NSCONFIGFILE=/etc/DPNSCONFIG DPMUSER=dpmmgr DPMGROUP=dpmmgr NB_THREADS=20 sysname=`uname -s` # source function library if [ -r /etc/rc.d/init.d/functions ]; then . /etc/rc.d/init.d/functions DAEMON=daemon FAILURE=failure ECHO_FAILURE=echo_failure SUCCESS=success ECHO_SUCCESS=echo_success ECHO_END=echo if [ $sysname = "Linux" ]; then ECHOOPT=-n fi else DAEMON=eval FAILURE= ECHO_FAILURE= SUCCESS= ECHO_SUCCESS= ECHOOPT= ECHO_END= fi RETVAL=0 prog="dpnsdaemon" PIDFILE=/var/run/dpnsdaemon.pid PIDDIR=/var/run SUBSYS=/var/lock/subsys/dpm-mysql-nameserver SUBSYSDIR=/var/lock/subsys [ -z "$SILENTSTOP" ] && SILENTSTOP=0 DPNSDAEMON=/usr/sbin/dpnsdaemon DPNSSHUTDOWN=/usr/sbin/dpns-shutdown if [ -r /etc/dpnsdaemon.conf ]; then SYSCONFIGDPNSDAEMON=/etc/dpnsdaemon.conf elif [ -r /etc/sysconfig/dpnsdaemon ]; then SYSCONFIGDPNSDAEMON=/etc/sysconfig/dpnsdaemon elif [ -r /etc/default/dpnsdaemon ]; then SYSCONFIGDPNSDAEMON=/etc/default/dpnsdaemon fi # ## Blindly attempt to create useful directories # # [ ! -d $PIDDIR ] && mkdir -p $PIDDIR > /dev/null 2>&1 # [ ! -d $SUBSYSDIR ] && mkdir -p $SUBSYSDIR > /dev/null 2>&1 if [ $sysname = "HP-UX" ]; then export UNIX95=1 fi if [ $sysname = "SunOS" ]; then format4comm="fname" elif [ $sysname = "Darwin" ]; then format4comm="ucomm" else format4comm="comm" fi case "$1" in start) DPMUSERHOME=`finger $DPMUSER | grep -i directory: | cut -f 2 -d' '` X509_USER_CERT=/etc/grid-security/$DPMUSER/dpmcert.pem export X509_USER_CERT X509_USER_KEY=/etc/grid-security/$DPMUSER/dpmkey.pem export X509_USER_KEY pid=`ps -eo pid,ppid,$format4comm | grep " 1 dpnsdaemon$" | awk '{print $1}'` if [ -n "$pid" ]; then echo $ECHOOPT "dpnsdaemon already started: " [ -n "$ECHO_SUCCESS" ] && $ECHO_SUCCESS "dpnsdaemon already started: " RETVAL=0 else if [ -n "$SYSCONFIGDPNSDAEMON" ]; then # ## Source the configuration # . $SYSCONFIGDPNSDAEMON if [ "${RUN_DPNSDAEMON}" != "yes" ]; then echo $ECHOOPT "$SYSCONFIGDPNSDAEMON says NO: " [ -n "$ECHO_SUCCESS" ] && $ECHO_SUCCESS "$SYSCONFIGDPNSDAEMON says NO: " RETVAL=0 $ECHO_END exit $RETVAL fi if [ -n "${ULIMIT_N}" ]; then ulimit -n ${ULIMIT_N} fi fi if [ ! -s "$NSCONFIGFILE" ]; then echo $ECHOOPT "config file $NSCONFIGFILE empty: " [ -n "$ECHO_FAILURE" ] && $ECHO_FAILURE "config file $NSCONFIGFILE empty: " RETVAL=1 fi if [ $RETVAL -eq 0 ]; then echo $ECHOOPT "Starting $prog: " cd / mkdir -p `dirname $DPNSDAEMONLOGFILE` chown $DPMUSER:$DPMGROUP `dirname $DPNSDAEMONLOGFILE` if [ "${ALLOW_COREDUMP}" != "yes" ]; then $DAEMON "su $DPMUSER -c \"$DPNSDAEMON -t $NB_THREADS -c $NSCONFIGFILE -l $DPNSDAEMONLOGFILE\"" else $DAEMON "su $DPMUSER -c \"mkdir -p $DPMUSERHOME/dpns; cd $DPMUSERHOME/dpns; hostname -f >> logstart; date >> logstart; ulimit -c unlimited; pwd >> logstart; ulimit -c >> logstart; echo DAEMON $DPNSDAEMON \`hostname -f\` >> logstart; $DPNSDAEMON -t $NB_THREADS -c $NSCONFIGFILE -l $DPNSDAEMONLOGFILE\"" fi if [ $? -eq 0 ]; then [ -d $SUBSYSDIR ] && touch $SUBSYS if [ -d $PIDDIR ]; then pid=`ps -eo pid,ppid,$format4comm | grep " 1 dpnsdaemon$" | awk '{print $1}'` # The point of $PIDFILE is that it kills only # the master daemon. rm -f $PIDFILE echo $pid > $PIDFILE fi [ -n "$ECHO_SUCCESS" ] && $ECHO_SUCCESS "Starting $prog: " RETVAL=0 else [ -n "$ECHO_FAILURE" ] && $ECHO_FAILURE "Starting $prog: " RETVAL=1 fi fi fi $ECHO_END ;; stop) if [ -f $PIDFILE ]; then echo $ECHOOPT "Stopping $prog: " if [ -x $DPNSSHUTDOWN ]; then $DPNSSHUTDOWN -f -h `hostname` > /dev/null 2>&1 RETVAL=$? if [ $RETVAL -ne 0 ]; then kill -2 -`cat $PIDFILE` > /dev/null 2>&1 RETVAL=$? fi else kill -2 -`cat $PIDFILE` > /dev/null 2>&1 RETVAL=$? fi if [ $RETVAL -eq 0 ]; then rm -f $PIDFILE [ -n "$ECHO_SUCCESS" ] && $ECHO_SUCCESS "Stopping $prog: " else [ -n "$ECHO_FAILURE" ] && $ECHO_FAILURE "Stopping $prog: " fi else # dpnsdaemon might have been started by hand pid=`ps -eo pid,ppid,$format4comm | grep " 1 dpnsdaemon$" | awk '{print $1}'` if [ -n "$pid" ]; then echo $ECHOOPT "Stopping $prog: " if [ -x $DPNSSHUTDOWN ]; then $DPNSSHUTDOWN -f -h `hostname` > /dev/null 2>&1 RETVAL=$? if [ $RETVAL -ne 0 ]; then kill -2 -$pid > /dev/null 2>&1 RETVAL=$? fi else kill -2 -$pid > /dev/null 2>&1 RETVAL=$? fi if [ $RETVAL -eq 0 ]; then [ -n "$ECHO_SUCCESS" ] && $ECHO_SUCCESS "Stopping $prog: " else [ -n "$ECHO_FAILURE" ] && $ECHO_FAILURE "Stopping $prog: " fi else echo $ECHOOPT "dpnsdaemon already stopped: " [ -n "$ECHO_SUCCESS" ] && $ECHO_SUCCESS "dpnsdaemon already stopped: " [ $SILENTSTOP -eq 0 ] && RETVAL=0 || RETVAL=1 fi fi lpid="X" while [ "x$lpid" != "x" ]; do sleep 1 #Does not seem to work on SunOS ;-) lpid=`ps -eo pid,ppid,$format4comm | grep " 1 dpnsdaemon$" | awk '{print $1}'` done [ -d $SUBSYSDIR ] && rm -f $SUBSYS $ECHO_END ;; restart | force-reload) $0 stop if [ $? -eq 0 -o $SILENTSTOP -eq 0 ]; then sleep 5 $0 start RETVAL=$? else RETVAL=0 fi ;; condrestart | try-restart) SILENTSTOP=1 export SILENTSTOP $0 restart RETVAL=$? ;; reload) ;; status) pid=`ps -eo pid,ppid,$format4comm | grep " 1 dpnsdaemon$" | awk '{print $1}'` if [ -n "$pid" ]; then echo $ECHOOPT "dpnsdaemon (pid $pid) is running..." $ECHO_SUCCESS $ECHO_END RETVAL=0 else if [ -f $PIDFILE ]; then pid=`head -1 $PIDFILE` if [ "$pid" != "" ] ; then echo $ECHOOPT "dpnsdaemon dead but pid file exists" $ECHO_FAILURE $ECHO_END RETVAL=1 else echo $ECHOOPT "dpnsdaemon dead" $ECHO_FAILURE $ECHO_END RETVAL=1 fi else if [ -f $SUBSYS ]; then echo $ECHOOPT "dpnsdaemon dead but subsys ($SUBSYS) locked" RETVAL=2 else echo $ECHOOPT "dpnsdaemon is stopped" RETVAL=3 fi $ECHO_FAILURE $ECHO_END fi fi ;; *) echo "Usage: $0 {start|stop|status|restart|condrestart}" RETVAL=1 ;; esac exit $RETVAL