Allow services to define which extra commands require the service to be started

This commit is contained in:
Roy Marples 2007-11-29 16:23:59 +00:00
parent 82df7e4584
commit 16ad975b2d
4 changed files with 26 additions and 6 deletions

View File

@ -29,8 +29,16 @@ command_args=${dnsmasq_args}
pidfile=/var/run/dnsmasq.pid pidfile=/var/run/dnsmasq.pid
required_files=/usr/local/etc/dnsmasq.conf required_files=/usr/local/etc/dnsmasq.conf
extra_started_commands="reload"
depend() { depend() {
provide dns provide dns
need localmount net need localmount net
after bootmisc after bootmisc
} }
reload() {
ebegin "Reloading ${SVCNAME}"
start-stop-daemon --signal SIGHUP --pidfile "${pidfile}"
eend $?
}

View File

@ -27,7 +27,7 @@ command=/usr/sbin/named
command_args=${named_args} command_args=${named_args}
pidfile=/var/run/named/pid pidfile=/var/run/named/pid
name="Domain Name server" name="Domain Name server"
extra_commands="reload" extra_started_commands="reload"
namedb=/etc/namedb namedb=/etc/namedb
named_uid=${named_uid:-bind} named_uid=${named_uid:-bind}

View File

@ -58,14 +58,15 @@ if [ "${RC_SYS}" = "VPS" ]; then
fi fi
# If $svcdir is still mounted, preserve it if we can # If $svcdir is still mounted, preserve it if we can
mnt=$(mountinfo --node "${RC_SVCDIR}") mnt=$(mountinfo --node "${RC_SVCDIR}")
if [ -n "${mnt}" -a -w "${RC_LIBDIR}" ]; then if [ -n "${mnt}" -a -w "${RC_LIBDIR}" ]; then
f_opts="-m -c" f_opts="-m -c"
[ "${RC_UNAME}" = "Linux" ] && f_opts="-c" [ "${RC_UNAME}" = "Linux" ] && f_opts="-c"
if [ -n "$(fuser ${f_opts} "${svcdir}" 2>/dev/null)" ]; then if type fuser >/dev/null 2>&1; then
fuser -k ${f_opts} "${svcdir}" >/dev/null 2>&1 if [ -n "$(fuser ${f_opts} "${svcdir}" 2>/dev/null)" ]; then
sleep 2 fuser -k ${f_opts} "${svcdir}" >/dev/null 2>&1
sleep 2
fi
fi fi
cp -p "${RC_SVCDIR}"/deptree "${RC_SVCDIR}"/depconfig \ cp -p "${RC_SVCDIR}"/deptree "${RC_SVCDIR}"/depconfig \
"${RC_SVCDIR}"/softlevel "${RC_SVCDIR}"/nettree \ "${RC_SVCDIR}"/softlevel "${RC_SVCDIR}"/nettree \

View File

@ -144,7 +144,8 @@ fi
while [ -n "$1" ]; do while [ -n "$1" ]; do
# See if we have the required function and run it # See if we have the required function and run it
for _cmd in describe start stop ${extra_commands:-${opts}}; do for _cmd in describe start stop ${extra_commands:-${opts}} \
${extra_started_commands}; do
if [ "${_cmd}" = "$1" ]; then if [ "${_cmd}" = "$1" ]; then
if type "$1" >/dev/null 2>&1; then if type "$1" >/dev/null 2>&1; then
# If we're in the background, we may wish to fake some # If we're in the background, we may wish to fake some
@ -159,6 +160,16 @@ while [ -n "$1" ]; do
fi fi
done done
fi fi
# Check to see if we need to be started before we can run
# this command
for _cmd in ${extra_started_commands}; do
if [ "${_cmd}" = "$1" ]; then
if ! service_started "${SVCNAME}"; then
eerror "${SVCNAME}: cannot \`$1' as it has not been started"
exit 1
fi
fi
done
unset _cmd unset _cmd
if type "$1"_pre >/dev/null 2>&1; then if type "$1"_pre >/dev/null 2>&1; then
"$1"_pre || exit $? "$1"_pre || exit $?