Make the default start, stop and status functions overridable
This will make it possible to add support for supervision suites such as runit and s6.
This commit is contained in:
parent
0b435ddd83
commit
abef2fcb2d
@ -77,6 +77,12 @@
|
||||
#rc_crashed_stop=NO
|
||||
#rc_crashed_start=YES
|
||||
|
||||
# Set rc_supervisor to use a program to monitor your daemons and restart
|
||||
# them when they crash.
|
||||
# Leaving this undefined uses start-stop-daemon, which is OpenRC's
|
||||
# default.
|
||||
#rc_supervisor=""
|
||||
|
||||
# Set rc_nocolor to yes if you do not want colors displayed in OpenRC
|
||||
# output.
|
||||
#rc_nocolor=NO
|
||||
|
@ -1,7 +1,7 @@
|
||||
DIR= ${LIBEXECDIR}/sh
|
||||
SRCS= init.sh.in functions.sh.in gendepends.sh.in \
|
||||
openrc-run.sh.in rc-functions.sh.in tmpfiles.sh.in ${SRCS-${OS}}
|
||||
INC= rc-mount.sh functions.sh rc-functions.sh
|
||||
INC= rc-mount.sh functions.sh rc-functions.sh start-stop-daemon.sh
|
||||
BIN= gendepends.sh init.sh openrc-run.sh tmpfiles.sh ${BIN-${OS}}
|
||||
|
||||
INSTALLAFTER= _installafter
|
||||
|
@ -125,72 +125,6 @@ _status()
|
||||
fi
|
||||
}
|
||||
|
||||
# Template start / stop / status functions
|
||||
start()
|
||||
{
|
||||
[ -n "$command" ] || return 0
|
||||
local _background=
|
||||
ebegin "Starting ${name:-$RC_SVCNAME}"
|
||||
if yesno "${command_background}"; then
|
||||
if [ -z "${pidfile}" ]; then
|
||||
eend 1 "command_background option used but no pidfile specified"
|
||||
return 1
|
||||
fi
|
||||
_background="--background --make-pidfile"
|
||||
fi
|
||||
if yesno "$start_inactive"; then
|
||||
local _inactive=false
|
||||
service_inactive && _inactive=true
|
||||
mark_service_inactive
|
||||
fi
|
||||
eval start-stop-daemon --start \
|
||||
--exec $command \
|
||||
${chroot:+--chroot} $chroot \
|
||||
${procname:+--name} $procname \
|
||||
${pidfile:+--pidfile} $pidfile \
|
||||
$_background $start_stop_daemon_args \
|
||||
-- $command_args
|
||||
if eend $? "Failed to start $RC_SVCNAME"; then
|
||||
service_set_value "command" "${command}"
|
||||
[ -n "${chroot}" ] && service_set_value "chroot" "${chroot}"
|
||||
[ -n "${pidfile}" ] && service_set_value "pidfile" "${pidfile}"
|
||||
[ -n "${procname}" ] && service_set_value "procname" "${procname}"
|
||||
return 0
|
||||
fi
|
||||
if yesno "$start_inactive"; then
|
||||
if ! $_inactive; then
|
||||
mark_service_stopped
|
||||
fi
|
||||
fi
|
||||
return 1
|
||||
}
|
||||
|
||||
stop()
|
||||
{
|
||||
local startcommand="$(service_get_value "command")"
|
||||
local startchroot="$(service_get_value "chroot")"
|
||||
local startpidfile="$(service_get_value "pidfile")"
|
||||
local startprocname="$(service_get_value "procname")"
|
||||
command="${startcommand:-$command}"
|
||||
chroot="${startchroot:-$chroot}"
|
||||
pidfile="${startpidfile:-$pidfile}"
|
||||
procname="${startprocname:-$procname}"
|
||||
[ -n "$command" -o -n "$procname" -o -n "$pidfile" ] || return 0
|
||||
ebegin "Stopping ${name:-$RC_SVCNAME}"
|
||||
start-stop-daemon --stop \
|
||||
${retry:+--retry} $retry \
|
||||
${command:+--exec} $command \
|
||||
${procname:+--name} $procname \
|
||||
${pidfile:+--pidfile} $chroot$pidfile \
|
||||
${stopsig:+--signal} $stopsig
|
||||
eend $? "Failed to stop $RC_SVCNAME"
|
||||
}
|
||||
|
||||
status()
|
||||
{
|
||||
_status
|
||||
}
|
||||
|
||||
yesno $RC_DEBUG && set -x
|
||||
|
||||
_conf_d=${RC_SERVICE%/*}/../conf.d
|
||||
@ -212,6 +146,15 @@ unset _conf_d
|
||||
# Load any system overrides
|
||||
sourcex -e "@SYSCONFDIR@/rc.conf"
|
||||
|
||||
# load a service supervisor
|
||||
sourcex "@LIBEXECDIR@/sh/start-stop-daemon.sh"
|
||||
if [ -n "$rc_supervisor" ]; then
|
||||
if ! sourcex -e "@LIBEXECDIR@/sh/${rc_supervisor}.sh"; then
|
||||
ewarn "$rc_supervisor is an invalid value for rc_supervisor"
|
||||
ewarn "Using the default."
|
||||
fi
|
||||
fi
|
||||
|
||||
# Set verbose mode
|
||||
if yesno "${rc_verbose:-$RC_VERBOSE}"; then
|
||||
EINFO_VERBOSE=yes
|
||||
|
71
sh/start-stop-daemon.sh
Normal file
71
sh/start-stop-daemon.sh
Normal file
@ -0,0 +1,71 @@
|
||||
# Default start / stop / status functions
|
||||
# Copyright (c) 2007-2009 Roy Marples <roy@marples.name>
|
||||
# Released under the 2-clause BSD license.
|
||||
|
||||
start()
|
||||
{
|
||||
[ -n "$command" ] || return 0
|
||||
|
||||
local _background=
|
||||
ebegin "Starting ${name:-$RC_SVCNAME}"
|
||||
if yesno "${command_background}"; then
|
||||
if [ -z "${pidfile}" ]; then
|
||||
eend 1 "command_background option used but no pidfile specified"
|
||||
return 1
|
||||
fi
|
||||
if [ -n "${command_args_background}" ]; then
|
||||
eend 1 "command_background used with command_args_background"
|
||||
return 1
|
||||
fi
|
||||
_background="--background --make-pidfile"
|
||||
fi
|
||||
if yesno "$start_inactive"; then
|
||||
local _inactive=false
|
||||
service_inactive && _inactive=true
|
||||
mark_service_inactive
|
||||
fi
|
||||
eval start-stop-daemon --start \
|
||||
--exec $command \
|
||||
${procname:+--name} $procname \
|
||||
${pidfile:+--pidfile} $pidfile \
|
||||
${command_user+--user} $command_user \
|
||||
$_background $start_stop_daemon_args \
|
||||
-- $command_args $command_args_background
|
||||
if eend $? "Failed to start $RC_SVCNAME"; then
|
||||
service_set_value "command" "${command}"
|
||||
[ -n "${pidfile}" ] && service_set_value "pidfile" "${pidfile}"
|
||||
[ -n "${procname}" ] && service_set_value "procname" "${procname}"
|
||||
return 0
|
||||
fi
|
||||
if yesno "$start_inactive"; then
|
||||
if ! $_inactive; then
|
||||
mark_service_stopped
|
||||
fi
|
||||
fi
|
||||
return 1
|
||||
}
|
||||
|
||||
stop()
|
||||
{
|
||||
local startcommand="$(service_get_value "command")"
|
||||
local startpidfile="$(service_get_value "pidfile")"
|
||||
local startprocname="$(service_get_value "procname")"
|
||||
command="${startcommand:-$command}"
|
||||
pidfile="${startpidfile:-$pidfile}"
|
||||
procname="${startprocname:-$procname}"
|
||||
[ -n "$command" -o -n "$procname" -o -n "$pidfile" ] || return 0
|
||||
ebegin "Stopping ${name:-$RC_SVCNAME}"
|
||||
start-stop-daemon --stop \
|
||||
${retry:+--retry} $retry \
|
||||
${command:+--exec} $command \
|
||||
${procname:+--name} $procname \
|
||||
${pidfile:+--pidfile} $pidfile \
|
||||
${stopsig:+--signal} $stopsig
|
||||
|
||||
eend $? "Failed to stop $RC_SVCNAME"
|
||||
}
|
||||
|
||||
status()
|
||||
{
|
||||
_status
|
||||
}
|
Loading…
Reference in New Issue
Block a user