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_stop=NO
|
||||||
#rc_crashed_start=YES
|
#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
|
# Set rc_nocolor to yes if you do not want colors displayed in OpenRC
|
||||||
# output.
|
# output.
|
||||||
#rc_nocolor=NO
|
#rc_nocolor=NO
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
DIR= ${LIBEXECDIR}/sh
|
DIR= ${LIBEXECDIR}/sh
|
||||||
SRCS= init.sh.in functions.sh.in gendepends.sh.in \
|
SRCS= init.sh.in functions.sh.in gendepends.sh.in \
|
||||||
openrc-run.sh.in rc-functions.sh.in tmpfiles.sh.in ${SRCS-${OS}}
|
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}}
|
BIN= gendepends.sh init.sh openrc-run.sh tmpfiles.sh ${BIN-${OS}}
|
||||||
|
|
||||||
INSTALLAFTER= _installafter
|
INSTALLAFTER= _installafter
|
||||||
|
@ -125,72 +125,6 @@ _status()
|
|||||||
fi
|
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
|
yesno $RC_DEBUG && set -x
|
||||||
|
|
||||||
_conf_d=${RC_SERVICE%/*}/../conf.d
|
_conf_d=${RC_SERVICE%/*}/../conf.d
|
||||||
@ -212,6 +146,15 @@ unset _conf_d
|
|||||||
# Load any system overrides
|
# Load any system overrides
|
||||||
sourcex -e "@SYSCONFDIR@/rc.conf"
|
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
|
# Set verbose mode
|
||||||
if yesno "${rc_verbose:-$RC_VERBOSE}"; then
|
if yesno "${rc_verbose:-$RC_VERBOSE}"; then
|
||||||
EINFO_VERBOSE=yes
|
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