Sophie

Sophie

distrib > Mageia > 5 > x86_64 > by-pkgid > e9ce7af1236962ff1a56d01dc8a2383a > files > 3

devmon-0.3.1-0.beta1.8.mga5.noarch.rpm

#!/bin/bash
#
# chkconfig: 2345 90 10
# description: An snmp data collector for the hobbit & BigBrother network
#              monitoring suites
# processname: devmon
# pidfile: /run/devmon/devmon.pid
# config: /usr/share/devmon/devmon.cfg

# source function library
. /etc/init.d/functions

RETVAL=0
PIDFILE=/run/devmon/devmon.pid
KILLDELAY=5
ARGS=""
RUNASUSER=devmon
[ -e /etc/sysconfig/devmon ] && . /etc/sysconfig/devmon

prog="/usr/share/devmon/devmon"
if [ -e ~hobbit/client/bin/bbcmd ]
then prog="~hobbit/client/bin/bbcmd $prog"
elif [ -e ~xymon/client/bin/bbcmd ]
then prog="~xymon/client/bin/bbcmd $prog"
elif [ -e ~bb/etc/bbdef.sh ]
then . ~bb/etc/bbdef.sh
fi

start() {
	gprintf "Starting Devmon: "

 	daemon ${RUNASUSER:+--user=$RUNASUSER} $prog "$ARGS"
	RETVAL=$?
	echo
	[ $RETVAL -eq 0 ] && touch /var/lock/subsys/devmon
}

stop() {
	gprintf "Stopping Devmon: "
	# Try killproc with the options we need sending sig 0, if it fails
	# with a pidof error, we need the internal killproc which
	# is a copy of the killproc that has the options we need
	# otherwise we use the killproc we have

	if killproc -p $PIDFILE -d $KILLDELAY devmon -0 >/dev/null
	then killproc -p $PIDFILE -d $KILLDELAY devmon
	else internal_killproc -p $PIDFILE -d $KILLDELAY devmon
	fi
	RETVAL=$?
	echo
	[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/devmon
}

rotate () {
	if killproc -p $PIDFILE -d $KILLDELAY devmon -0 >/dev/null
	then killproc -p $PIDFILE -d $KILLDELAY devmon -HUP >/dev/null
	else internal_killproc -p $PIDFILE -d $KILLDELAY devmon -HUP >/dev/null
	fi
	RETVAL=$?
}

internal_killproc() {
	local RC killlevel= base pid pid_file= delay

	RC=0; delay=3
	# Test syntax.
	if [ "$#" -eq 0 ]; then
		gprintf "Usage: internal_killproc [-p pidfile] [ -d delay] {program} [-signal]\n"
		return 1
	fi
	if [ "$1" = "-p" ]; then
		pid_file=$2
		shift 2
	fi
	if [ "$1" = "-d" ]; then
		delay=$2
		shift 2
	fi
        

	# check for second arg to be kill level
	[ -n "${2:-}" ] && killlevel=$2

        # Save basename.
        base=${1##*/}

        # Find pid.
	__pids_var_run "$1" "$pid_file"
	if [ -z "$pid_file" -a -z "$pid" ]; then
		pid="$(__pids_pidof "$1")"
	fi

        # Kill it.
        if [ -n "$pid" ] ; then
                [ "$BOOTUP" = "verbose" -a -z "${LSB:-}" ] && echo -n "$base "
		if [ -z "$killlevel" ] ; then
		       if checkpid $pid 2>&1; then
			   # TERM first, then KILL if not dead
			   kill -TERM $pid >/dev/null 2>&1
			   usleep 100000
			   if checkpid $pid && sleep 1 &&
			      checkpid $pid && sleep $delay &&
			      checkpid $pid ; then
                                kill -KILL $pid >/dev/null 2>&1
				usleep 100000
			   fi
		        fi
			checkpid $pid
			RC=$?
			[ "$RC" -eq 0 ] && failure $"$base shutdown" || success $"$base shutdown"
			RC=$((! $RC))
		# use specified level only
		else
		        if checkpid $pid; then
	                	kill $killlevel $pid >/dev/null 2>&1
				RC=$?
				[ "$RC" -eq 0 ] && success $"$base $killlevel" || failure $"$base $killlevel"
			elif [ -n "${LSB:-}" ]; then
				RC=7 # Program is not running
			fi
		fi
	else
		if [ -n "${LSB:-}" -a -n "$killlevel" ]; then
			RC=7 # Program is not running
		else
			failure $"%s shutdown" "$base"
			RC=0
		fi
	fi

        # Remove pid file if any.
	if [ -z "$killlevel" ]; then
            rm -f "${pid_file:-/run/devmon/$base.pid}"
	fi
	return $RC
}

case "$1" in
  start)
	start
	RETVAL=$?
	;;
  stop)
	stop
	RETVAL=$?
	;;
  restart)
	stop
	start
	RETVAL=$?
	;;
  reload|readbbhosts)
	sh -c "$prog $ARGS --readbbhosts"
	RETVAL=$?
	;;
  rotate)
	if status devmon >/dev/null
	then rotate
	fi
	RETVAL=$?
	;;
  status)
	status devmon
	RETVAL=$?
	;;
  *)
	gprintf "Usage: %s {start|stop|restart|[reload|readbbhosts]|rotate|status}\n" "$0"
	exit 1
esac

exit $RETVAL