xcat-core/xCAT-server/etc/init.d/xcatd
Jarrod Johnson 56556bdeec Fix xCAT init script status reporting
xCAT in some cases was reporting improper status for certain scenarios.
Risk being inaccure if no pid file exists so that it is accurate when it
does exist.
2014-02-07 17:37:56 -05:00

149 lines
3.0 KiB
Bash
Executable File

#!/bin/sh
# IBM(c) 2007 EPL license http://www.eclipse.org/legal/epl-v10.html
# chkconfig: 345 85 60
# description: xCAT management service
# processname: xcatd
### BEGIN INIT INFO
# Provides: xcatd
# Required-Start: $network $syslog sshd
# Required-Stop:
# Should-Start: mysql
# Default-Start: 3 4 5
# Default-stop: 0 1 2 6
# Short-Description: xCATd
# Description: xCAT management service
### END INIT INFO
# This avoids the perl locale warnings
if [ -z $LC_ALL ]; then
export LC_ALL=C
fi
if [ -r /etc/sysconfig/xcat ]; then
. /etc/sysconfig/xcat
fi
RHSuccess()
{
success
echo
}
RHFailure()
{
failure
echo
}
MStatus()
{
PID=`cat /var/run/xcatd.pid`
if [ -z "$PID" ]; then
echo "xCAT service is not running"
return 3
fi
ps $PID|grep xcatd: > /dev/null 2>&1
if [ "$?" = "0" ]; then
RVAL=0
echo "xCAT service is running"
else
RVAL=3
echo "xCAT service is not running"
fi
return $RVAL
}
if [ -f /etc/init.d/functions ]; then
#echo RH
. /etc/init.d/functions
START_DAEMON=daemon
STATUS=MStatus
LOG_SUCCESS=RHSuccess
LOG_FAILURE=RHFailure
LOG_WARNING=passed
elif [ -f /lib/lsb/init-functions ]; then
. /lib/lsb/init-functions
START_DAEMON=start_daemon
STATUS=MStatus
LOG_SUCCESS=log_success_msg
LOG_FAILURE=log_failure_msg
LOG_WARNING=log_warning_msg
else
echo "Error, don't know how to start on this platform"
exit 1
fi
case $1 in
restart)
echo -n "Restarting xCATd "
if [ -r /etc/profile.d/xcat.sh ]; then
. /etc/profile.d/xcat.sh
fi
xcatd -p /var/run/xcatd.pid && $LOG_SUCCESS || $LOG_FAILURE
;;
reload)
echo -n "Reloading xCATd "
if [ -r /etc/profile.d/xcat.sh ]; then
. /etc/profile.d/xcat.sh
fi
export XCATRELOAD=yes
xcatd -p /var/run/xcatd.pid && $LOG_SUCCESS || $LOG_FAILURE
;;
status)
$STATUS
;;
stop)
echo -n "Stopping xCATd "
$STATUS > /dev/null 2>&1
if [ "$?" != "0" ]; then
echo -n "xCATd not running, not stopping "
$LOG_WARNING
exit 0
fi
kill -TERM -`cat /var/run/xcatd.pid`
i=0;
while $STATUS > /dev/null 2>&1 && [ $i -lt 15 ]; do
sleep .1
i=$((i+1))
done
$STATUS > /dev/null 2>&1
if [ "$?" = "0" ]; then
kill -KILL -`cat /var/run/xcatd.pid`
fi
sleep .1
$STATUS > /dev/null 2>&1
if [ "$?" = "0" ]; then
$LOG_FAILURE
exit 0
fi
$LOG_SUCCESS
rm /var/run/xcatd.pid
;;
start)
$STATUS > /dev/null 2>&1
if [ "$?" = "0" ]; then
echo -n "xCATd already running "
$LOG_WARNING
exit
fi
echo -n "Starting xCATd "
#/var/run/ is a symlink on /run and that's just a tmpfs mount created on boot on ubuntu.
#if there is not this directory, create first
if [ ! -d /var/run/xcat ];then
mkdir -p /var/run/xcat
fi
#xcatroot=`head -n1 /etc/profile.d/xcat.sh`
#export $xcatroot
# When this script is invoked via the service cmd on RH, it doesn't have PATH
# set either, so we run our profile entry to get everything set up properly.
if [ -r /etc/profile.d/xcat.sh ]; then
. /etc/profile.d/xcat.sh
fi
xcatd -p /var/run/xcatd.pid && $LOG_SUCCESS || $LOG_FAILURE
;;
esac