2013-09-26 17:14:40 +02:00

121 lines
2.7 KiB
Bash

#!@RCD_SCRIPTS_SHELL@
#
# PROVIDE: xencommons
# REQUIRE: DAEMON
. /etc/rc.subr
name="xencommons"
rcvar=xend
start_precmd="xen_precmd"
start_cmd="xen_startcmd"
stop_cmd="xen_stop"
status_cmd="xen_status"
extra_commands="status"
required_files="/kern/xen/privcmd"
XENSTORED_PIDFILE="/var/run/xenstored.pid"
XENCONSOLED_PIDFILE="/var/run/xenconsoled.pid"
XENBACKENDD_PIDFILE="/var/run/xenbackendd.pid"
SBINDIR=@PREFIX@/sbin
xen_precmd()
{
mkdir -p /var/run/xend || exit 1
mkdir -p /var/run/xend/boot || exit 1
mkdir -p /var/run/xenstored || exit 1
}
xen_startcmd()
{
printf "Starting xenservices: xenstored, xenconsoled, xenbackendd.\n"
XENSTORED_ARGS=" --pid-file ${XENSTORED_PIDFILE}"
if [ -n "${XENSTORED_TRACE}" ]; then
XENSTORED_ARGS="${XENSTORED_ARGS} -T /var/log/xen/xenstored-trace.log"
fi
${SBINDIR}/xenstored ${XENSTORED_ARGS}
sleep 5
XENCONSOLED_ARGS=""
if [ -n "${XENCONSOLED_TRACE}" ]; then
XENCONSOLED_ARGS="${XENCONSOLED_ARGS} --log=${XENCONSOLED_TRACE}"
fi
${SBINDIR}/xenconsoled ${XENCONSOLED_ARGS}
XENBACKENDD_ARGS=""
if [ -n "${XENBACKENDD_DEBUG}" ]; then
XENBACKENDD_ARGS="${XENBACKENDD_ARGS} -d"
fi
${SBINDIR}/xenbackendd ${XENBACKENDD_ARGS}
}
xen_stop()
{
pids=""
printf "Stopping xencommons"
rc_pid=$(check_pidfile ${XENBACKENDD_PIDFILE} ${SBINDIR}/xenbackendd)
pids="$pids $rc_pid"
rc_pid=$(check_pidfile ${XENCONSOLED_PIDFILE} ${SBINDIR}/xenconsoled)
pids="$pids $rc_pid"
rc_pid=$(check_pidfile ${XENSTORED_PIDFILE} ${SBINDIR}/xenstored)
pids="$pids $rc_pid"
kill -${sig_stop:-TERM} $pids
wait_for_pids $pids
printf ".\n"
}
xen_status()
{
xenstored_pid=$(check_pidfile ${XENSTORED_PIDFILE} ${SBINDIR}/xenstored)
if test -n ${xenstored_pid}; then
pids="$pids $xenstored_pid"
fi
xenconsoled_pid=$(check_pidfile ${XENCONSOLED_PIDFILE} ${SBINDIR}/xenconsoled)
if test -n ${xenconsoled_pid}; then
pids="$pids $xenconsoled_pid"
fi
xenbackend_pid=$(check_pidfile ${XENBACKENDD_PIDFILE} ${SBINDIR}/xenbackendd)
if test -n ${xenbackend_pid}; then
pids="$pids $xenbackend_pid"
fi
if test -n "$xenbackend_pid" -a -n "$xenconsoled_pid" -a -n "$xenstored_pid";
then
echo "xencommons are running as pids $pids."
return 0
fi
if test -z "$xenbackend_pid" -a -z "$xenconsoled_pid" -a -z "$xenstored_pid";
then
echo "xencommons are not running."
return 0
fi
if test -n $xenstored_pid; then
echo "xenstored is running as pid $xenstored_pid."
else
echo "xenstored is not running."
fi
if test -n $xenconsoled_pid; then
echo "xenconsoled is running as pid $xenconsoled_pid."
else
echo "xenconsoled is not running."
fi
if test -n $xenbackend_pid; then
echo "xenbackendd is running as pid $xenbackend_pid."
else
echo "xenbackendd is not running."
fi
}
load_rc_config $name
run_rc_command "$1"