Sophie

Sophie

distrib > Fedora > 14 > x86_64 > by-pkgid > 5fcf65993792468c3e3e4c433c6b6793 > files > 4

dpm-postgres-srmv2-1.7.4.7-3.fc14.x86_64.rpm

#!/bin/sh
#
# dpm-srmv2         Start/Stop dpm-srmv2
#
# chkconfig: - 94 16
# description: SRMV2 server daemon
#
### BEGIN INIT INFO
# Provides:          dpm-srmv2
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Stop:      0 1 2 3 4 5 6
# Short-Description: SRMV2 server daemon
# Description:       SRMV2 server daemon
### END INIT INFO
#
# $Id: dpm-srmv2.scripts.postgresql 3179 2010-02-18 09:14:57Z baud $
#
# @(#)$RCSfile: dpm-srmv2.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' '`
SRMV2DAEMONLOGFILE=/var/log/dpm-srmv2/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-srmv2"
PIDFILE=/var/run/dpm-srmv2.pid
PIDDIR=/var/run
SUBSYS=/var/lock/subsys/dpm-postgres-srmv2
SUBSYSDIR=/var/lock/subsys
[ -z "$SILENTSTOP" ] && SILENTSTOP=0
SRMV2DAEMON=/usr/sbin/dpm-srmv2
SRMV2SHUTDOWN=/usr/sbin/dpm-srmv2-shutdown
if [ -r /etc/dpm-srmv2.conf ]; then
    SYSCONFIGSRMV2DAEMON=/etc/dpm-srmv2.conf
elif [ -r /etc/sysconfig/dpm-srmv2 ]; then
    SYSCONFIGSRMV2DAEMON=/etc/sysconfig/dpm-srmv2
elif [ -r /etc/default/dpm-srmv2 ]; then
    SYSCONFIGSRMV2DAEMON=/etc/default/dpm-srmv2
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 '\*:8444|\*:dpm-srmv2' | grep LISTEN | grep dpm-srmv2 > /dev/null
    else
        netstat -a  | egrep '\*[:.]8444|\*[:.]dpm-srmv2' | egrep 'LISTEN *$' > /dev/null
    fi
    # ps -eo ppid,$format4comm | egrep '^[ \t]+1 dpm-srmv2' > /dev/null
    if [ $? -eq 0 ]; then
        echo $ECHOOPT "dpm-srmv2 already started: "
        [ -n "$ECHO_SUCCESS" ] && $ECHO_SUCCESS "dpm-srmv2 already started: "
        RETVAL=0
    else
        if [ -n "$SYSCONFIGSRMV2DAEMON" ]; then
            #
            ## Source the configuration
            #
            . $SYSCONFIGSRMV2DAEMON
            if [ "${RUN_SRMV2DAEMON}" != "yes" ]; then
                echo $ECHOOPT "$SYSCONFIGSRMV2DAEMON says NO: "
                [ -n "$ECHO_SUCCESS" ] && $ECHO_SUCCESS "$SYSCONFIGSRMV2DAEMON 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 $SRMV2DAEMONLOGFILE`
            chown $DPMUSER:$DPMGROUP `dirname $SRMV2DAEMONLOGFILE`
            if [ "${ALLOW_COREDUMP}" != "yes" ]; then
                $DAEMON "su $DPMUSER -c \"$SRMV2DAEMON -c $DPMCONFIGFILE -l $SRMV2DAEMONLOGFILE\""
            else
                $DAEMON "su $DPMUSER -c \"mkdir -p $DPMUSERHOME/dpm-srmv2; cd $DPMUSERHOME/dpm-srmv2; hostname -f >> logstart; date >> logstart; ulimit -c unlimited; pwd >> logstart; ulimit -c >> logstart; echo DAEMON $SRMV2DAEMON \`hostname -f\` >> logstart; $SRMV2DAEMON -c $DPMCONFIGFILE -l $SRMV2DAEMONLOGFILE\""
            fi
            if [ $? -eq 0 ]; then
                [ -d $SUBSYSDIR ] && touch $SUBSYS
                if [ -d $PIDDIR ]; then
                    pid=`ps -eo pid,ppid,$format4comm | grep " 1 dpm-srmv2$" | 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-srmv2 not started: "
                [ -n "$FAILURE" ] && $FAILURE "dpm-srmv2 not started: "
                RETVAL=1
            fi
        fi
    fi
    $ECHO_END
    ;;
  stop)
    if [ -f $PIDFILE ]; then
        [ $SILENTSTOP -eq 0 ] && echo $ECHOOPT "Stopping $prog: "
        if [ -x $SRMV2SHUTDOWN ]; then
            if [ $SILENTSTOP -eq 0 ]; then
                $SRMV2SHUTDOWN -f -h `hostname`
            else
                $SRMV2SHUTDOWN -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-srmv2 might have been started by hand
        pid=`ps -eo pid,ppid,$format4comm | grep " 1 dpm-srmv2$" | awk '{print $1}'`
        if [ -n "$pid" ]; then
            [ $SILENTSTOP -eq 0 ] && echo $ECHOOPT "Stopping $prog: "
            if [ -x $SRMV2SHUTDOWN ]; then
                if [ $SILENTSTOP -eq 0 ]; then
                    $SRMV2SHUTDOWN -f -h `hostname`
                else
                    $SRMV2SHUTDOWN -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-srmv2 already stopped: "
            [ $SILENTSTOP -eq 0 -a -n "$ECHO_SUCCESS" ] && $ECHO_SUCCESS "dpm-srmv2 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-srmv2$" | 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-srmv2$" | awk '{print $1}'`
    if [ -n "$pid" ]; then
        echo $ECHOOPT "dpm-srmv2 (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-srmv2 dead but pid file exists"
                $ECHO_FAILURE
                $ECHO_END
                RETVAL=1
            else
                echo $ECHOOPT "dpm-srmv2 dead"
                $ECHO_FAILURE
                $ECHO_END
                RETVAL=1
            fi
        else
            if [ -f $SUBSYS ]; then
                echo $ECHOOPT "dpm-srmv2 dead but subsys ($SUBSYS) locked"
                RETVAL=2
            else
                echo $ECHOOPT "dpm-srmv2 is stopped"
                RETVAL=3
            fi
            $ECHO_FAILURE
            $ECHO_END
        fi
    fi
    ;;
  *)
    echo "Usage: $0 {start|stop|status|restart|condrestart}"
    RETVAL=1
    ;;
esac

exit $RETVAL