Return 0 and silent on startup when service(s) already running.
authorFrantišek Dvořák <valtri@civ.zcu.cz>
Wed, 24 Feb 2010 15:07:21 +0000 (15:07 +0000)
committerFrantišek Dvořák <valtri@civ.zcu.cz>
Wed, 24 Feb 2010 15:07:21 +0000 (15:07 +0000)
org.glite.lb.logger/config/startup
org.glite.lb.server/config/startup

index 9104144..a6011be 100755 (executable)
@@ -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()
index aa16a8f..1488bd1 100755 (executable)
@@ -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