#
# mcollective Application Server for STOMP based agents
#
-# chkconfig: 345 24 76
#
# description: mcollective lets you build powerful Stomp compatible middleware clients in ruby without having to worry too
# much about all the setup and management of a Stomp connection, it also provides stats, logging and so forth
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start daemon at boot time
-# Description: Enable service provided by daemon.
+# Description: Enable service provided by mcollective.
### END INIT INFO
-mcollectived="/usr/sbin/mcollectived"
+# check permissions
-# Lockfile
-if [ -d /var/lock/subsys ]; then
- # RedHat/CentOS/etc who use subsys
- lock="/var/lock/subsys/mcollective"
-else
- # The rest of them
- lock="/var/lock/mcollective"
-fi
+uid=`id -u`
+[ $uid -gt 0 ] && { echo "You need to be root to run file" ; exit 4 ; }
# PID directory
-pidfile="/var/run/mcollectived.pid"
+pidfile="/var/run/mcollective.pid"
+
+name="mcollective"
+mcollectived=/usr/sbin/mcollectived
+daemonopts="--config=/etc/mcollective/server.cfg"
+
# Source function library.
. /lib/lsb/init-functions
if ! [ -f $mcollectived ]
then
echo "mcollectived binary not found"
- exit 0
+ exit 5
fi
# See how we were called.
case "$1" in
start)
- echo -n "Starting mcollective: "
-
- if [ -f ${lock} ]; then
- # we were not shut down correctly
- if [ -s ${pidfile} ]; then
- kill `cat ${pidfile}` >/dev/null 2>&1
- fi
- rm -f ${pidfile}
-
- rm -f ${lock}
- sleep 2
- fi
-
- rm -f ${pidfile}
-
- ${mcollectived} --pid=${pidfile} --config="/etc/mcollective/server.cfg"
- if [ $? = 0 ]; then
- log_success_msg
- touch $lock
- exit 0
- else
- log_failure_msg
- exit 1
- fi
+ echo "Starting daemon: " $name
+ # start the program
+ if [ -f $pidfile ]; then
+ if [ -f "$(cat /proc/$(cat $pidfile)/exe > /dev/null)" ] ; then
+ echo MCollective appears to be running
+ exit 1
+ else
+ /sbin/start-stop-daemon --start -b --quiet --oknodo -m --pidfile $pidfile --exec $mcollectived -- $daemonopts
+ [ $? = 0 ] && { exit 0 ; } || { exit 1 ; }
+ fi
+ else
+ /sbin/start-stop-daemon --start -b --quiet --oknodo -m --pidfile $pidfile --exec $mcollectived -- $daemonopts
+ fi
+ log_success_msg "mcollective started"
;;
stop)
- echo -n "Shutting down mcollective: "
-
- if [ -s ${pidfile} ]; then
- kill `cat ${pidfile}` >/dev/null 2>&1
- fi
- rm -f ${pidfile}
-
- log_success_msg
- rm -f $lock
+ echo "Stopping daemon: " $name
+ /sbin/start-stop-daemon --stop -q --pidfile $pidfile
+ if [ -f $pidfile ]; then
+ rm -f $pidfile
+ fi
+ [ $? = 0 ] && { exit 0 ; } || { exit 1 ; }
+ log_success_msg "mcollective stopped"
;;
restart)
+ echo "Restarting daemon: " $name
$0 stop
sleep 2
$0 start
- ;;
- condrestart)
- if [ -f $lock ]; then
- $0 stop
- # avoid race
- sleep 2
- $0 start
- fi
+ [ $? = 0 ] && { echo "mcollective restarted" ; exit 0 ; }
;;
status)
- if [ -f ${lock} ]; then
- if [ -s ${pidfile} ]; then
- if [ -e /proc/`cat ${pidfile}` ]; then
- echo "mcollectived (`cat ${pidfile}`) is running"
- exit 0
- else
- echo "mcollectived (`cat ${pidfile}`) is NOT running"
- exit 1
- fi
- fi
- else
- echo "mcollectived: service not started"
- exit 1
- fi
- ;;
- force-reload)
- echo "not implemented"
+ status_of_proc -p ${pidfile} ${mcollectived} ${name} && exit 0 || exit $?
;;
*)
echo "Usage: mcollectived {start|stop|restart|condrestart|status}"
- exit 1
+ exit 2
;;
esac
-exit 0