From 9f27762ddbff6fc4860d70ef7728329f28e9cd6c Mon Sep 17 00:00:00 2001 From: =?utf8?q?Franti=C5=A1ek=20Dvo=C5=99=C3=A1k?= Date: Wed, 24 Feb 2010 15:07:21 +0000 Subject: [PATCH] Return 0 and silent on startup when service(s) already running. --- org.glite.lb.logger/config/startup | 27 ++++-- org.glite.lb.server/config/startup | 176 ++++++++++++++++++------------------- 2 files changed, 106 insertions(+), 97 deletions(-) diff --git a/org.glite.lb.logger/config/startup b/org.glite.lb.logger/config/startup index 9104144..a6011be 100755 --- a/org.glite.lb.logger/config/startup +++ b/org.glite.lb.logger/config/startup @@ -17,6 +17,23 @@ IL_PIDFILE=${IL_PIDFILE:-$GLITE_LOCATION_VAR/glite-lb-interlogd.pid} unset creds port +start_daemon() +{ + local name="$1" + local pidfile="$2" + local cmd="$3" + + if [ -f "$pidfile" ]; then + if kill -0 `cat $pidfile`; then + return 0 + fi + echo -n "Warning: stalled $pidfile for $name" + rm -f "$pidfile" + fi + echo -n "Starting $name ..." + su - $GLITE_USER -c "$cmd" && echo " done" || echo " FAILED" +} + start() { case "$GLITE_LB_TYPE" in @@ -49,14 +66,12 @@ start() mkdir -p /var/glite/log chown $GLITE_USER /var/glite/log - echo -n Starting glite-lb-logd ... (cd /tmp && ls -f /tmp |grep ^dglogd_sock_ |xargs rm -f) - su - $GLITE_USER -c "$GLITE_LOCATION/bin/glite-lb-logd \ - -i $LL_PIDFILE $creds $port $sock $fprefix" && echo " done" || echo " FAILED" + start_daemon "glite-lb-logd" "$LL_PIDFILE" "$GLITE_LOCATION/bin/glite-lb-logd \ + -i $LL_PIDFILE $creds $port $sock $fprefix" - echo -n Starting glite-lb-interlogd ... - su - $GLITE_USER -c "$GLITE_LOCATION/bin/glite-lb-interlogd \ - -i $IL_PIDFILE $creds $sock $fprefix" && echo " done" || echo " FAILED" + start_daemon "glite-lb-interlogd" "$IL_PIDFILE" "$GLITE_LOCATION/bin/glite-lb-interlogd \ + -i $IL_PIDFILE $creds $sock $fprefix" } killwait() diff --git a/org.glite.lb.server/config/startup b/org.glite.lb.server/config/startup index aa16a8f..1488bd1 100755 --- a/org.glite.lb.server/config/startup +++ b/org.glite.lb.server/config/startup @@ -13,8 +13,8 @@ GLITE_JP_LOCATION=${GLITE_JP_LOCATION:-$GLITE_LOCATION} [ -f $HOME/.glite.conf ] && . $HOME/.glite.conf -[ -n "$GLITE_LB_SERVER_PIDFILE" ] && pidfile=$GLITE_LB_SERVER_PIDFILE || - pidfile=$GLITE_LOCATION_VAR/glite-lb-bkserverd.pid +[ -n "$GLITE_LB_SERVER_PIDFILE" ] && BK_PIDFILE=$GLITE_LB_SERVER_PIDFILE || + BK_PIDFILE=$GLITE_LOCATION_VAR/glite-lb-bkserverd.pid [ -z "$GLITE_LB_NOTIF_SOCK" ] && GLITE_LB_NOTIF_SOCK="/tmp/glite-lb-notif.sock" [ -n "$GLITE_JP_IMPORTER_PIDFILE" ] && jp_importer_pidfile=$GLITE_JP_IMPORTER_PIDFILE || jp_importer_pidfile=$GLITE_LOCATION_VAR/glite-jp-importer.pid @@ -28,6 +28,71 @@ NOTIF_IL_PIDFILE=$GLITE_LOCATION_VAR/glite-lb-notif-interlogd.pid unset creds port +start_daemon() +{ + local name="$1" + local pidfile="$2" + local cmd="$3" + + if [ -f "$pidfile" ]; then + if kill -0 `cat $pidfile`; then + return 0 + fi + echo -n "Warning: stalled $pidfile for $name" + rm -f "$pidfile" + fi + echo -n "Starting $name ..." + su - $GLITE_USER -c "$cmd" && echo " done" || echo " FAILED" +} + +stop_daemon() +{ + name="$1" + local pidfile="$2" + + if [ -f "$pidfile" ]; then + pid=`cat "$pidfile"` + echo -n Stopping $name \($pid\) ... + kill $pid + try=0 + while kill -0 $pid >/dev/null 2>&1; do + sleep 1; + try=`expr $try + 1` + if [ $try = 20 ]; then + kill -9 $pid + echo " force quit after $try retries" + return 1 + fi + done + echo " done" + rm -f $pidfile + else + echo $name not running + return 1 + fi +} + +status_daemon() +{ + local name="$1" + local pidfile="$2" + + if [ -f "$pidfile" ]; then + pid=`cat "$pidfile"` + if kill -0 $pid >/dev/null 2>&1; then + echo $name running as $pid + else + echo $name not running + return 1 + fi + else + echo $name not running + return 1 + fi + + return 0 +} + start() { if test -z "$GLITE_USER" ;then @@ -110,132 +175,61 @@ start() ;; esac - echo -n Starting glite-lb-bkserverd ... - su - $GLITE_USER -c "$GLITE_LOCATION/bin/glite-lb-bkserverd \ + start_daemon glite-lb-bkserver "$BK_PIDFILE" "$GLITE_LOCATION/bin/glite-lb-bkserverd \ --notif-il-sock=$GLITE_LB_NOTIF_SOCK \ --notif-il-fprefix=$GLITE_LB_NOTIF_FPREFIX \ - $super $creds -i $pidfile $port $wport $dumpdir $purgedir $lbreg_maildir $proxy\ - $GLITE_LB_SERVER_OTHER_OPTIONS" \ - && echo " done" || echo " FAILED" + $super $creds -i $BK_PIDFILE $port $wport $dumpdir $purgedir $lbreg_maildir $proxy\ + $GLITE_LB_SERVER_OTHER_OPTIONS" if test -x $GLITE_LOCATION/bin/glite-lb-notif-interlogd; then - echo -n Starting glite-lb-notif-interlogd ... - su - $GLITE_USER -c "$GLITE_LOCATION/bin/glite-lb-notif-interlogd \ + start_daemon glite-lb-notif-interlogd "$NOTIF_IL_PIDFILE" "$GLITE_LOCATION/bin/glite-lb-notif-interlogd \ -f $GLITE_LB_NOTIF_FPREFIX -s $GLITE_LB_NOTIF_SOCK \ -i $NOTIF_IL_PIDFILE -M 10485760 \ - $creds $GLITE_LB_NOTIF_OTHER_OPTIONS" && echo " done" || echo " FAILED" + $creds $GLITE_LB_NOTIF_OTHER_OPTIONS" else echo Warning: glite-lb-notif-interlogd not installed, LB notifications will not work fi if test x"$GLITE_LB_EXPORT_ENABLED" = x"true" ; then - echo -n Starting glite-jp-importer ... - su - $GLITE_USER -c "LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$GLITE_JP_LOCATION/lib $GLITE_JP_LOCATION/bin/glite-jp-importer \ + start_daemon glite-jp-importer "$jp_importer_pidfile" "\ + LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$GLITE_JP_LOCATION/lib \ + $GLITE_JP_LOCATION/bin/glite-jp-importer \ -i $jp_importer_pidfile $jpreg_maildir $jpdump_maildir $sandbox_maildir \ - $jpps $creds $GLITE_JP_IMPORTER_ARGS" \ - && echo " done" || echo " FAILED" + $jpps $creds $GLITE_JP_IMPORTER_ARGS" fi if test x"$GLITE_LB_TYPE" = x"proxy" -o x"$GLITE_LB_TYPE" = x"both" ; then - if test -x $GLITE_LOCATION/bin/glite-lb-notif-interlogd; then - echo -n Starting glite-lb-interlogd for proxy ... - su - $GLITE_USER -c "$GLITE_LOCATION/bin/glite-lb-interlogd \ + if test -x $GLITE_LOCATION/bin/glite-lb-interlogd; then + start_daemon "glite-lb-interlog for proxy" "$IL_PIDFILE" "$GLITE_LOCATION/bin/glite-lb-interlogd \ -f $GLITE_LB_PROXY_FPREFIX -s $GLITE_LB_PROXY_SOCK \ -i $IL_PIDFILE \ - $creds $GLITE_LB_PREFIX_OTHER_OPTIONS" && echo " done" || echo " FAILED" + $creds $GLITE_LB_PREFIX_OTHER_OPTIONS" else echo Warning: glite-lb-interlogd not installed, logging to LB proxy will not work fi fi } -stop_daemon() -{ - name="$1" - local pidfile="$2" - - if [ -f "$pidfile" ]; then - pid=`cat "$pidfile"` - kill $pid - echo -n Stopping $name \($pid\) ... - try=0 - while ps p $pid >/dev/null 2>&1; do - sleep 1; - try=`expr $try + 1` - if [ $try = 20 ]; then - echo " giving up after $try retries" - return 1 - fi - done - echo " done" - rm -f $pidfile - else - echo $pidfile does not exist - $name not running? >&2 - return 1 - fi -} - -status_daemon() -{ - name="$1" - pidfile="$2" - - if [ -f "$pidfile" ]; then - pid=`cat "$pidfile"` - if ps p $pid >/dev/null 2>&1; then - echo $name running as $pid - else - echo $name not running - return 1 - fi - else - echo $name not running - return 1 - fi - - return 0 -} - stop() { - LC_ALL=C - - stop_daemon glite-lb-notif-interlogd $NOTIF_IL_PIDFILE - echo " done" + stop_daemon "glite-lb-notif-interlogd" $NOTIF_IL_PIDFILE - stop_daemon "glite-lb-bkserverd" $pidfile + stop_daemon "glite-lb-bkserverd" $BK_PIDFILE if test x"$GLITE_LB_EXPORT_ENABLED" = x"true"; then stop_daemon "glite-jp-importer" $jp_importer_pidfile fi - if test -f $IL_PIDFILE; then - stop_daemon glite-lb-interlogd $IL_PIDFILE - echo "done" - else - echo "glite-lb-interlogd for proxy not running" - fi + stop_daemon "glite-lb-interlogd" $IL_PIDFILE } status() { retval=0 - LC_ALL=C - - if netstat -an --unix | grep "^unix .* LISTEN.* ${GLITE_LB_NOTIF_SOCK}$" >/dev/null 2>&1 ;then - echo glite-lb-notif-interlogd running - else - echo glite-lb-notif-interlogd not running - retval=1 - fi - if netstat -an --unix | grep "^unix .* LISTEN.* ${GLITE_LB_PROXY_SOCK}$" >/dev/null 2>&1 ;then - echo glite-lb-interlogd for proxy running - else - echo glite-lb-interlogd for proxy not running - retval=1 - fi + status_daemon "glite-lb-notif-interlogd" "$NOTIF_IL_PIDFILE" || retval=1 + status_daemon "glite-lb-interlogd for proxy" "$IL_PIDFILE" || retval=1 - status_daemon "glite-lb-bkserverd" "$pidfile" || retval=1 + status_daemon "glite-lb-bkserverd" "$BK_PIDFILE" || retval=1 if test x"$GLITE_LB_EXPORT_ENABLED" = x"true"; then status_daemon "glite-jp-importer" "$jp_importer_pidfile" || retval=1 fi -- 1.8.2.3