#!/bin/sh # # dpm-srmv1 Start/Stop dpm-srmv1 # # chkconfig: - 94 16 # description: SRMV1 server daemon # ### BEGIN INIT INFO # Provides: dpm-srmv1 # Required-Start: $remote_fs $syslog # Required-Stop: $remote_fs $syslog # Default-Stop: 0 1 2 3 4 5 6 # Short-Description: SRMV1 server daemon # Description: SRMV1 server daemon ### END INIT INFO # # $Id: dpm-srmv1.scripts.postgresql 3179 2010-02-18 09:14:57Z baud $ # # @(#)$RCSfile: dpm-srmv1.scripts.postgresql,v $ $Revision: 3179 $ $Date: 2010-02-18 10:14:57 +0100 (Thu, 18 Feb 2010) $ CERN/IT/ADC/CA Jean-Damien Durand # # ## PLEASE USE sysconfig FILE TO CHANGE THESE ENVIRONMENT VARIABLES # GRIDMAPDIR=/etc/grid-security/gridmapdir export GRIDMAPDIR GRIDMAP=/etc/grid-security/grid-mapfile export GRIDMAP CSEC_MECH=ID export CSEC_MECH DPMUSER=dpmmgr DPMGROUP=dpmmgr DPMUSERHOME=`finger $DPMUSER | grep -i directory: | cut -f 2 -d' '` SRMV1DAEMONLOGFILE=/var/log/dpm-srmv1/log DPMCONFIGFILE=/etc/DPMCONFIG 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=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-srmv1" PIDFILE=/var/run/dpm-srmv1.pid PIDDIR=/var/run SUBSYS=/var/lock/subsys/dpm-postgres-srmv1 SUBSYSDIR=/var/lock/subsys [ -z "$SILENTSTOP" ] && SILENTSTOP=0 SRMV1DAEMON=/usr/sbin/dpm-srmv1 SRMV1SHUTDOWN=/usr/sbin/dpm-srmv1-shutdown if [ -r /etc/dpm-srmv1.conf ]; then SYSCONFIGSRMV1DAEMON=/etc/dpm-srmv1.conf elif [ -r /etc/sysconfig/dpm-srmv1 ]; then SYSCONFIGSRMV1DAEMON=/etc/sysconfig/dpm-srmv1 elif [ -r /etc/default/dpm-srmv1 ]; then SYSCONFIGSRMV1DAEMON=/etc/default/dpm-srmv1 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) 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 echo $ECHOOPT "Starting $prog: " if [ $sysname = "Linux" -a `whoami` = "root" ]; then netstat -ap | egrep '\*:8443|\*:dpm-srmv1' | grep LISTEN | grep dpm-srmv1 > /dev/null else netstat -a | egrep '\*[:.]8443|\*[:.]dpm-srmv1' | egrep 'LISTEN *$' > /dev/null fi # ps -eo ppid,$format4comm | egrep '^[ \t]+1 dpm-srmv1' > /dev/null if [ $? -eq 0 ]; then echo $ECHOOPT "dpm-srmv1 already started: " [ -n "$ECHO_SUCCESS" ] && $ECHO_SUCCESS "dpm-srmv1 already started: " RETVAL=0 else if [ -n "$SYSCONFIGSRMV1DAEMON" ]; then # ## Source the configuration # . $SYSCONFIGSRMV1DAEMON if [ "${RUN_SRMV1DAEMON}" != "yes" ]; then echo $ECHOOPT "$SYSCONFIGSRMV1DAEMON says NO: " [ -n "$ECHO_SUCCESS" ] && $ECHO_SUCCESS "$SYSCONFIGSRMV1DAEMON says NO: " RETVAL=0 $ECHO_END exit $RETVAL fi export DPM_HOST export DPNS_HOST if [ -n "${ULIMIT_N}" ]; then ulimit -n ${ULIMIT_N} fi fi if [ ! -s "$DPMCONFIGFILE" ]; then echo "FAILED : config file $DPMCONFIGFILE empty" RETVAL=1 exit $RETVAL fi if [ $RETVAL -eq 0 ]; then cd / mkdir -p `dirname $SRMV1DAEMONLOGFILE` chown $DPMUSER:$DPMGROUP `dirname $SRMV1DAEMONLOGFILE` if [ "${ALLOW_COREDUMP}" != "yes" ]; then $DAEMON "su $DPMUSER -c \"$SRMV1DAEMON -c $DPMCONFIGFILE -l $SRMV1DAEMONLOGFILE\"" else $DAEMON "su $DPMUSER -c \"mkdir -p $DPMUSERHOME/dpm-srmv1; cd $DPMUSERHOME/dpm-srmv1; hostname -f >> logstart; date >> logstart; ulimit -c unlimited; pwd >> logstart; ulimit -c >> logstart; echo DAEMON $SRMV1DAEMON \`hostname -f\` >> logstart; $SRMV1DAEMON -c $DPMCONFIGFILE -l $SRMV1DAEMONLOGFILE\"" fi if [ $? -eq 0 ]; then [ -d $SUBSYSDIR ] && touch $SUBSYS if [ -d $PIDDIR ]; then pid=`ps -eo pid,ppid,$format4comm | grep " 1 dpm-srmv1$" | awk '{print $1}'` # The point of $PIDFILE is that it kills only # the master daemon. rm -f $PIDFILE echo $pid > $PIDFILE fi RETVAL=0 else echo $ECHOOPT "dpm-srmv1 not started: " [ -n "$FAILURE" ] && $FAILURE "dpm-srmv1 not started: " RETVAL=1 fi fi fi $ECHO_END ;; stop) if [ -f $PIDFILE ]; then [ $SILENTSTOP -eq 0 ] && echo $ECHOOPT "Stopping $prog: " if [ -x $SRMV1SHUTDOWN ]; then if [ $SILENTSTOP -eq 0 ]; then $SRMV1SHUTDOWN -f -h `hostname` else $SRMV1SHUTDOWN -f -h `hostname` > /dev/null 2>&1 fi RETVAL=$? if [ $RETVAL -ne 0 ]; then if [ $SILENTSTOP -eq 0 ]; then kill -2 -`cat $PIDFILE` else kill -2 -`cat $PIDFILE` > /dev/null 2>&1 fi RETVAL=$? fi else if [ $SILENTSTOP -eq 0 ]; then kill -2 -`cat $PIDFILE` else kill -2 -`cat $PIDFILE` > /dev/null 2>&1 fi RETVAL=$? fi if [ $RETVAL -eq 0 ]; then rm -f $PIDFILE fi else # dpm-srmv1 might have been started by hand pid=`ps -eo pid,ppid,$format4comm | grep " 1 dpm-srmv1$" | awk '{print $1}'` if [ -n "$pid" ]; then [ $SILENTSTOP -eq 0 ] && echo $ECHOOPT "Stopping $prog: " if [ -x $SRMV1SHUTDOWN ]; then if [ $SILENTSTOP -eq 0 ]; then $SRMV1SHUTDOWN -f -h `hostname` else $SRMV1SHUTDOWN -f -h `hostname` > /dev/null 2>&1 fi RETVAL=$? if [ $RETVAL -ne 0 ]; then if [ $SILENTSTOP -eq 0 ]; then kill -2 -$pid else kill -2 -$pid > /dev/null 2>&1 fi RETVAL=$? fi else if [ $SILENTSTOP -eq 0 ]; then kill -2 -$pid else kill -2 -$pid > /dev/null 2>&1 fi RETVAL=$? fi else [ $SILENTSTOP -eq 0 ] && echo $ECHOOPT "dpm-srmv1 already stopped: " [ $SILENTSTOP -eq 0 -a -n "$ECHO_SUCCESS" ] && $ECHO_SUCCESS "dpm-srmv1 already stopped: " RETVAL=0 fi fi if [ $SILENTSTOP -eq 0 -a $sysname = "Linux" ]; then if [ $RETVAL -eq 0 ]; then $ECHO_SUCCESS else $ECHO_FAILURE 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 dpm-srmv1$" | awk '{print $1}'` done [ -d $SUBSYSDIR ] && rm -f $SUBSYS [ $SILENTSTOP -eq 0 -a -n "$ECHO_END" ] && $ECHO_END ;; restart | force-reload) $0 stop if [ $? -eq 0 -o $SILENTSTOP -eq 0 ]; then sleep 5 $0 start RETVAL=$? else # ## It is legal to return zero it if was ## a conditional restart # if [ $SILENTSTOP -eq 0 ]; then RETVAL=1 else RETVAL=0 fi fi ;; condrestart | try-restart) SILENTSTOP=1 export SILENTSTOP $0 restart RETVAL=$? ;; reload) ;; status) pid=`ps -eo pid,ppid,$format4comm | grep " 1 dpm-srmv1$" | awk '{print $1}'` if [ -n "$pid" ]; then echo $ECHOOPT "dpm-srmv1 (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-srmv1 dead but pid file exists" $ECHO_FAILURE $ECHO_END RETVAL=1 else echo $ECHOOPT "dpm-srmv1 dead" $ECHO_FAILURE $ECHO_END RETVAL=1 fi else if [ -f $SUBSYS ]; then echo $ECHOOPT "dpm-srmv1 dead but subsys ($SUBSYS) locked" RETVAL=2 else echo $ECHOOPT "dpm-srmv1 is stopped" RETVAL=3 fi $ECHO_FAILURE $ECHO_END fi fi ;; *) echo "Usage: $0 {start|stop|status|restart|condrestart}" RETVAL=1 ;; esac exit $RETVAL