#!/bin/sh # # dpm-rfiod Start/Stop dpm-rfiod. # # chkconfig: - 92 18 # description: RFIO server daemon # ### BEGIN INIT INFO # Provides: dpm-rfiod # Required-Start: $remote_fs $syslog # Required-Stop: $remote_fs $syslog # Should-Start: $network dpnsdaemon dpm # Should-Stop: $network dpnsdaemon dpm # Default-Stop: 0 1 2 3 4 5 6 # Short-Description: RFIO server daemon # Description: RFIO server daemon ### END INIT INFO # # $Id: dpm-rfiod.scripts 4094 2011-02-01 15:58:34Z baud $ # # @(#)$RCSfile: dpm-rfiod.scripts,v $ $Revision: 4094 $ $Date: 2011-02-01 16:58:34 +0100 (Tue, 01 Feb 2011) $ CERN/IT/ADC/CA Jean-Damien Durand # PREFIX=/usr GRIDMAPDIR=/etc/grid-security/gridmapdir export GRIDMAPDIR CSEC_MECH=ID export CSEC_MECH CSEC_NOTHREAD=1 export CSEC_NOTHREAD RFIO_PORT_RANGE="20000 25000" export RFIO_PORT_RANGE RFIOLOGFILE=/var/log/dpm-rfio/log 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="dpm-rfiod" NOMORERFIO=/etc/operator/nomorerfio PIDFILE=/var/run/dpm-rfiod.pid PIDDIR=/var/run SUBSYS=/var/lock/subsys/dpm-rfiod SUBSYSDIR=/var/lock/subsys [ -z "$SILENTSTOP" ] && SILENTSTOP=0 RFIOD=$PREFIX/sbin/dpm-rfiod OPTIONS="-sl" if [ -r /etc/dpm-rfiod.conf ]; then SYSCONFIGRFIOD=/etc/dpm-rfiod.conf elif [ -r /etc/sysconfig/dpm-rfiod ]; then SYSCONFIGRFIOD=/etc/sysconfig/dpm-rfiod elif [ -r /etc/default/dpm-rfiod ]; then SYSCONFIGRFIOD=/etc/default/dpm-rfiod 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) if [ -f ${NOMORERFIO} ]; then echo $ECHOOPT "${NOMORERFIO} exists: " [ -n "$ECHO_SUCCESS" ] && $ECHO_SUCCESS "${NOMORERFIO} exists: " RETVAL=0 else netstat -an | egrep '[:.]5001' | egrep 'LISTEN *$' > /dev/null if [ $? -eq 0 ]; then echo $ECHOOPT "dpm-rfiod already started: " [ -n "$ECHO_SUCCESS" ] && $ECHO_SUCCESS "dpm-rfiod already started: " RETVAL=0 else if [ -n "$SYSCONFIGRFIOD" ]; then # ## Source the configuration # . $SYSCONFIGRFIOD export DPNS_HOST if [ "${RUN_RFIOD}" != "yes" ]; then echo $ECHOOPT "$SYSCONFIGRFIOD says NO: " [ -n "$ECHO_SUCCESS" ] && $ECHO_SUCCESS "$SYSCONFIGRFIOD says NO: " RETVAL=0 $ECHO_END exit $RETVAL fi if [ -n "${ULIMIT_N}" ]; then ulimit -n ${ULIMIT_N} fi fi if [ $RETVAL -eq 0 ]; then echo $ECHOOPT "Starting $prog: " cd / mkdir -p `dirname $RFIOLOGFILE` touch $RFIOLOGFILE $DAEMON $RFIOD $OPTIONS -f $RFIOLOGFILE if [ $? -eq 0 ]; then [ -d $SUBSYSDIR ] && touch $SUBSYS if [ -d $PIDDIR ]; then pid=`ps -eo pid,ppid,$format4comm | grep " 1 dpm-rfiod$" | 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 fi $ECHO_END ;; stop) if [ -f $PIDFILE ]; then echo $ECHOOPT "Stopping $prog: " # ## We just attempt to kill the main daemon ## Remaining child are allowed to continue transfer up to ## the end # kill -9 `cat $PIDFILE` > /dev/null 2>&1 RETVAL=$? 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 # rfio might have been started by hand pid=`ps -eo pid,ppid,$format4comm | grep " 1 dpm-rfiod$" | awk '{print $1}'` if [ -n "$pid" ]; then echo $ECHOOPT "Stopping $prog: " # ## We just attempt to kill the main daemon ## Remaining child are allowed to continue transfer up to ## the end # kill -9 $pid > /dev/null 2>&1 RETVAL=$? if [ $RETVAL -eq 0 ]; then [ -n "$ECHO_SUCCESS" ] && $ECHO_SUCCESS "Stopping $prog: " else [ -n "$ECHO_FAILURE" ] && $ECHO_FAILURE "Stopping $prog: " fi else echo $ECHOOPT "dpm-rfiod already stopped: " [ -n "$ECHO_SUCCESS" ] && $ECHO_SUCCESS "dpm-rfiod already stopped: " [ $SILENTSTOP -eq 0 ] && RETVAL=0 || RETVAL=1 fi fi [ -d $SUBSYSDIR ] && rm -f $SUBSYS $ECHO_END ;; restart | force-reload) $0 stop if [ $? -eq 0 -o $SILENTSTOP -eq 0 ]; then $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 dpm-rfiod$" | awk '{print $1}'` if [ -n "$pid" ]; then echo $ECHOOPT "dpm-rfiod (pid $pid) is running..." $ECHO_SUCCESS $ECHO_END RETVAL=0 else if [ -f $PIDFILE ]; then pid=`head -1 $PIDFILE` if [ "$pid" != "" ] ; then echo $ECHOOPT "dpm-rfiod dead but pid file exists" $ECHO_FAILURE $ECHO_END RETVAL=1 fi else if [ -f $SUBSYS ]; then echo $ECHOOPT "dpm-rfiod dead but subsys ($SUBSYS) locked" RETVAL=2 else echo $ECHOOPT "dpm-rfiod is stopped" RETVAL=3 fi $ECHO_FAILURE $ECHO_END fi fi ;; *) echo "Usage: $0 {start|stop|status|restart|condrestart}" RETVAL=1 ;; esac exit $RETVAL