diff options
-rwxr-xr-x | debian/echolot.init | 24 | ||||
-rwxr-xr-x | tools/pingctl | 59 |
2 files changed, 48 insertions, 35 deletions
diff --git a/debian/echolot.init b/debian/echolot.init index 3916ddc..616aa2b 100755 --- a/debian/echolot.init +++ b/debian/echolot.init @@ -44,9 +44,9 @@ wait_for_deaddaemon () { sleep 2 echo -n "." done - rm -f /var/run/echolot/pingd.pid + rm -f $PIDFILE else - rm -f /var/run/echolot/pingd.pid + rm -f $PIDFILE fi fi } @@ -134,26 +134,6 @@ reload|force-reload|restart) wait_for_deaddaemon $PID $0 start ;; -process|add|delete|set|setremailercaps|deleteremailercaps|getkeyconf|sendpings|sendchainpings|buildstats|buildkeys|buildthesaurus|buildfromlines|dumpconf|summary) - # Check for right User - SU="" - if [ "$CHECKUID" -gt "0" ]; then - CUID=`id -u` - CUIDNAME=`id -nu` - if [ "$CUIDNAME" = "$USER" ]; then - SU="" - elif [ "$CUID" = "0" ]; then - SU="su $USER -c" - else - echo "You are neither $USER nor root. Aborting." >&2 - exit 1; - fi - fi - - echo "Running $DESC: $NAME $1..." - $SU $DAEMON "$@" - echo "done." - ;; *) echo "Usage: $0 (start|stop|reload|force-reload|restart)" >&2 echo " $0 <COMMAND> [parameters]" >&2 diff --git a/tools/pingctl b/tools/pingctl index 9304734..ba99c19 100755 --- a/tools/pingctl +++ b/tools/pingctl @@ -10,7 +10,9 @@ set -e USER=pinger VERBOSE=0 -PINGD="/home/pinger/echolot/pingd" +BASEDIR="/home/pinger/echolot" +PINGD="$BASEDIR/pingd" +PIDFILE="$BASEDIR/pingd.pid" # You probably don't want to mess with stuff below this line ################################################################ @@ -18,6 +20,35 @@ PINGD="/home/pinger/echolot/pingd" CHECKULIMIT=1 CHECKUID=1 + +wait_for_deaddaemon () { + PID=$1 + sleep 3 + if test -n "$PID" + then + if kill -0 $PID 2>/dev/null + then + echo -n "Waiting for pid $PID ." + cnt=0 + while kill -0 $PID 2>/dev/null + do + cnt=`expr $cnt + 1` + if [ $cnt -gt 30 ] + then + echo -n " Failed.. " + break + fi + sleep 2 + echo -n "." + done + rm -f $PIDFILE + else + rm -f $PIDFILE + fi + fi +} + + # Check for evil ulimits if [ "$CHECKULIMIT" -gt "0" ]; then FDs=`ulimit -n` @@ -70,6 +101,18 @@ fi case $1 in start) + if [ -f $PIDFILE ] ; then + PID=`cat $PIDFILE 2>/dev/null` || true + if kill -0 $PID 2>/dev/null + then + echo "pingd already running." + exit 0 + else + echo -n "Removing stale pid file: " + rm -f $PIDFILE + echo "$PIDFILE." + fi + fi echo -n "Starting Echolot: pingd" if [ ! -z "$SU" ]; then $SU "$PINGD --detach $VERBOSE start" @@ -90,23 +133,13 @@ stop) ;; reload|force-reload|restart) + PID=`cat $PIDFILE 2>/dev/null` || true $0 stop - sleep 10 + wait_for_deaddaemon $PID $0 start ;; -process|add|delete|set|setremailercaps|deleteremailercaps|getkeyconf|sendpings|sendchainpings|buildstats|buildkeys|buildthesaurus|buildfromlines|dumpconf|summary) - echo "Running pingd $1..." - if [ ! -z "$SU" ]; then - $SU "$PINGD \"$@\"" - else - $PINGD "$@" - fi - echo "done." - ;; *) echo "Usage: $0 (start|stop|reload|force-reload|restart)" >&2 - echo " $0 <COMMAND> [parameters]" >&2 - echo "See the pingd(1) manual page for valid commands" >&2 exit 1 ;; esac |