pnp4nagios/scripts/rc.pnp_gearman_worker.in

114 lines
2.6 KiB
Plaintext

#!@SHELL@
### BEGIN INIT INFO
# Provides: pnp_gearman_worker
# Required-Start: $all
# Required-Stop: $all
# Should-Start:
# Should-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start/Stop the pnp4nagios gearman worker
### END INIT INFO
DAEMON="@libexecdir@/process_perfdata.pl"
CFG="@sysconfdir@/process_perfdata.cfg"
NAME=pnp_gearman_worker
PIDFILE=@localstatedir@/${NAME}.pid
LOCKFILE=/var/lock/subsys/${NAME}
USER=@nagios_user@
USERID=`id -u`
CMD="$DAEMON --pidfile=$PIDFILE --config=$CFG --gearman --daemon"
function get_status() {
pid=`cat $PIDFILE 2>/dev/null`
if [ "$pid" != "" ]; then
ps -p $pid > /dev/null 2>&1
if [ $? -eq 0 ]; then
echo "$NAME is running with pid $pid"
return 0;
fi
fi
echo "$NAME is not running"
return 1;
}
function kill_procs() {
pid=`cat $PIDFILE 2>/dev/null`
if [ -z $pid ]; then
echo ". Not running."
else
# do a kill if still now down
ps -p $pid > /dev/null 2>&1 && kill $pid
for x in 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5; do
echo -n "."
ps -p $pid > /dev/null 2>&1 && sleep 1;
done
ps -p $pid > /dev/null 2>&1;
if [ $? -ne 0 ]; then
rm -f $PIDFILE
if [ "$USERID" -eq 0 ]; then
rm -f $LOCKFILE
fi
echo "done"
exit 0;
else
echo "failed"
exit 1;
fi
fi
}
case "$1" in
start)
echo -n "Starting $NAME "
get_status > /dev/null;
if [ $? = 0 ]; then
echo "failed"
echo "$NAME already running"
exit 0;
fi
if [ "$USERID" -eq 0 ]; then
su -s $SHELL - $USER -c "$CMD"
else
$CMD
fi
if [ $? -eq 0 ]; then
if [ "$USERID" -eq 0 ]; then
touch $LOCKFILE
fi
echo "done"
exit 0;
else
echo "failed"
exit 1;
fi
;;
stop)
echo -n "Stopping $NAME"
pid=`cat $PIDFILE 2>/dev/null`
if [ -z $pid ]; then
echo ". Not running."
else
# kill if still running
ps -p $pid > /dev/null 2>&1 && kill_procs;
fi
;;
status)
get_status;
exit $?;
;;
restart)
$0 stop && sleep 1 && $0 start
exit $?
;;
*)
echo "Usage: $NAME {start|stop|status|restart}"
exit 1
;;
esac
exit 0