#!/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 # 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 3179 2010-02-18 09:14:57Z baud $ # # @(#)$RCSfile: lfcdaemon.scripts.mysql,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 # LFCDAEMONLOGFILE=/var/log/lfc/log NSCONFIGFILE=/etc/NSCONFIG LFCUSER=lfcmgr LFCGROUP=lfcmgr LFCUSERHOME=`finger $LFCUSER | grep -i directory: | cut -f 2 -d' '` 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=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/lfc-mysql SUBSYSDIR=/var/lock/subsys [ -z "$SILENTSTOP" ] && SILENTSTOP=0 LFCDAEMON=/usr/sbin/lfcdaemon LFCSHUTDOWN=/usr/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) 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 echo $ECHOOPT "Starting $prog: " if [ $sysname = "Linux" -a `whoami` = "root" ]; then netstat -ap | egrep '\*:5010|\*:lfc' | grep LISTEN | grep lfcdaemon > /dev/null else netstat -a | egrep '\*[:.]5010|\*[:.]lfc' | egrep 'LISTEN *$' > /dev/null fi # ps -eo ppid,$format4comm | egrep '^[ \t]+1 lfcdaemon' > /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 "FAILED : config file $NSCONFIGFILE empty" RETVAL=1 exit $RETVAL fi if [ $RETVAL -eq 0 ]; then 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 RETVAL=0 else echo $ECHOOPT "lfcdaemon not started: " [ -n "$FAILURE" ] && $FAILURE "lfcdaemon not started: " RETVAL=1 fi fi fi $ECHO_END ;; stop) if [ -f $PIDFILE ]; then [ $SILENTSTOP -eq 0 ] && echo $ECHOOPT "Stopping $prog: " if [ -x $LFCSHUTDOWN ]; then if [ $SILENTSTOP -eq 0 ]; then $LFCSHUTDOWN -f -h `hostname` else $LFCSHUTDOWN -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 # lfcdaemon might have been started by hand pid=`ps -eo pid,ppid,$format4comm | grep " 1 lfcdaemon$" | awk '{print $1}'` if [ -n "$pid" ]; then [ $SILENTSTOP -eq 0 ] && echo $ECHOOPT "Stopping $prog: " if [ -x $LFCSHUTDOWN ]; then if [ $SILENTSTOP -eq 0 ]; then $LFCSHUTDOWN -f -h `hostname` else $LFCSHUTDOWN -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 "lfcdaemon already stopped: " [ $SILENTSTOP -eq 0 -a -n "$ECHO_SUCCESS" ] && $ECHO_SUCCESS "lfcdaemon 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 lfcdaemon$" | 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 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