#!/bin/sh # # lfcdaemon Start/Stop lfcdaemon # # chkconfig: - 66 39 # description: LFC server daemon # ### BEGIN INIT INFO # Provides: lfcdaemon # Required-Start: $remote_fs $syslog # Required-Stop: $remote_fs $syslog # Should-Start: $network mysqld # Should-Stop: $network mysqld # Default-Stop: 0 1 2 3 4 5 6 # Short-Description: LFC server daemon # Description: LFC server daemon ### END INIT INFO # # $Id: lfcdaemon.scripts.mysql 4467 2011-06-15 12:23:53Z rocha $ # # @(#)$RCSfile: lfcdaemon.scripts.mysql,v $ $Revision: 4467 $ $Date: 2011-06-15 14:23:53 +0200 (Wed, 15 Jun 2011) $ CERN/IT/ADC/CA Jean-Damien Durand # # ## PLEASE USE sysconfig FILE TO CHANGE THESE ENVIRONMENT VARIABLES # PREFIX=/usr LFCDAEMONLOGFILE=/var/log/lfc/log NSCONFIGFILE=/etc/NSCONFIG LFCUSER=lfcmgr LFCGROUP=lfcmgr 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 --check lfcdaemon" 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="lfcdaemon" PIDFILE=/var/run/lfcdaemon.pid PIDDIR=/var/run SUBSYS=/var/lock/subsys/lfcdaemon SUBSYSDIR=/var/lock/subsys [ -z "$SILENTSTOP" ] && SILENTSTOP=0 LFCDAEMON=$PREFIX/sbin/lfcdaemon LFCSHUTDOWN=$PREFIX/sbin/lfc-shutdown if [ -r /etc/lfcdaemon.conf ]; then SYSCONFIGLFCDAEMON=/etc/lfcdaemon.conf elif [ -r /etc/sysconfig/lfcdaemon ]; then SYSCONFIGLFCDAEMON=/etc/sysconfig/lfcdaemon elif [ -r /etc/default/lfcdaemon ]; then SYSCONFIGLFCDAEMON=/etc/default/lfcdaemon 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) LFCUSERHOME=`finger $LFCUSER | grep -i directory: | cut -f 2 -d' '` X509_USER_CERT=/etc/grid-security/$LFCUSER/lfccert.pem export X509_USER_CERT X509_USER_KEY=/etc/grid-security/$LFCUSER/lfckey.pem export X509_USER_KEY netstat -an | egrep '[:.]5010' | egrep 'LISTEN *$' > /dev/null if [ $? -eq 0 ]; then echo $ECHOOPT "lfcdaemon already started: " [ -n "$ECHO_SUCCESS" ] && $ECHO_SUCCESS "lfcdaemon already started: " RETVAL=0 else if [ -n "$SYSCONFIGLFCDAEMON" ]; then # ## Source the configuration # . $SYSCONFIGLFCDAEMON if [ "${RUN_LFCDAEMON}" != "yes" ]; then echo $ECHOOPT "$SYSCONFIGLFCDAEMON says NO: " [ -n "$ECHO_SUCCESS" ] && $ECHO_SUCCESS "$SYSCONFIGLFCDAEMON says NO: " RETVAL=0 $ECHO_END exit $RETVAL fi if [ "${RUN_READONLY}" = "yes" ]; then READONLY="-r" else READONLY="" fi if [ "${RUN_DISABLEAUTOVIDS}" = "yes" ]; then DISABLEAUTOVIDS="-n" else DISABLEAUTOVIDS="" 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 $LFCDAEMONLOGFILE` chown $LFCUSER:$LFCGROUP `dirname $LFCDAEMONLOGFILE` if [ "${ALLOW_COREDUMP}" != "yes" ]; then $DAEMON "su $LFCUSER -c \"$LFCDAEMON $READONLY $DISABLEAUTOVIDS -t $NB_THREADS -c $NSCONFIGFILE -l $LFCDAEMONLOGFILE\"" else $DAEMON "su $LFCUSER -c \"mkdir -p $LFCUSERHOME/lfc; cd $LFCUSERHOME/lfc; hostname -f >> logstart; date >> logstart; umask 0; umask >> logstart; ulimit -c unlimited; pwd >> logstart; ulimit -c >> logstart; echo DAEMON $LFCDAEMON \`hostname -f\` >> logstart; $LFCDAEMON $READONLY $DISABLEAUTOVIDS -t $NB_THREADS -c $NSCONFIGFILE -l $LFCDAEMONLOGFILE\"" fi if [ $? -eq 0 ]; then [ -d $SUBSYSDIR ] && touch $SUBSYS if [ -d $PIDDIR ]; then pid=`ps -eo pid,ppid,$format4comm | grep " 1 lfcdaemon$" | 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 $LFCSHUTDOWN ]; then $LFCSHUTDOWN -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 # lfcdaemon might have been started by hand pid=`ps -eo pid,ppid,$format4comm | grep " 1 lfcdaemon$" | awk '{print $1}'` if [ -n "$pid" ]; then echo $ECHOOPT "Stopping $prog: " if [ -x $LFCSHUTDOWN ]; then $LFCSHUTDOWN -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 "lfcdaemon already stopped: " [ -n "$ECHO_SUCCESS" ] && $ECHO_SUCCESS "lfcdaemon 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 lfcdaemon$" | 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 lfcdaemon$" | awk '{print $1}'` if [ -n "$pid" ]; then echo $ECHOOPT "lfcdaemon (pid $pid) is running..." $ECHO_SUCCESS $ECHO_END RETVAL=0 else if [ -f $PIDFILE ]; then pid=`head -1 $PIDFILE` if [ "$pid" != "" ] ; then echo $ECHOOPT "lfcdaemon dead but pid file exists" $ECHO_FAILURE $ECHO_END RETVAL=1 else echo $ECHOOPT "lfcdaemon dead" $ECHO_FAILURE $ECHO_END RETVAL=1 fi else if [ -f $SUBSYS ]; then echo $ECHOOPT "lfcdaemon dead but subsys ($SUBSYS) locked" RETVAL=2 else echo $ECHOOPT "lfcdaemon is stopped" RETVAL=3 fi $ECHO_FAILURE $ECHO_END fi fi ;; *) echo "Usage: $0 {start|stop|status|restart|condrestart}" RETVAL=1 ;; esac exit $RETVAL