svn commit: r328599 - stable/11/usr.sbin/service
Kyle Evans
kevans at FreeBSD.org
Tue Jan 30 19:16:39 UTC 2018
Author: kevans
Date: Tue Jan 30 19:16:38 2018
New Revision: 328599
URL: https://svnweb.freebsd.org/changeset/base/328599
Log:
MFC r328032,r328060,r328243: service(8): Support services in jails
MFC r328032: service(8): Add support for interfacing with services in jails
Provide a -j option that can take a jail name or id. If -j is specified,
check that the jail exists and proxy the service request through to
service(8) in the jail.
This allows for cleaner workflows when updating services in a jail, turning
the following:
pkg -j dns upgrade
jexec dns service named restart
into:
pkg -j dns upgrade
service -j dns named restart
MFC r328060: service(8): Reset OPTIND properly now that we parse args twice
r328032 introduced a second round of argument parsing to proxy the request
through to a jail as needed, but failed to reset OPTIND before getting to
the second round of parsing to allow other flags to be set.
MFC r328243: usr.sbin/service: Fix -j to not be order dependant
The introduced -j option is highly dependant on the ordering of arguments,
and it exhibited broken behavior in some other circumstances. Fix these
issues, and simplify the feature by removing the unneessary double parsing
of options.
PR: 223325
Modified:
stable/11/usr.sbin/service/service.8
stable/11/usr.sbin/service/service.sh
Directory Properties:
stable/11/ (props changed)
Modified: stable/11/usr.sbin/service/service.8
==============================================================================
--- stable/11/usr.sbin/service/service.8 Tue Jan 30 18:29:38 2018 (r328598)
+++ stable/11/usr.sbin/service/service.8 Tue Jan 30 19:16:38 2018 (r328599)
@@ -24,7 +24,7 @@
.\"
.\" $FreeBSD$
.\"
-.Dd December 11, 2012
+.Dd January 15, 2018
.Dt SERVICE 8
.Os
.Sh NAME
@@ -32,13 +32,17 @@
.Nd "control (start/stop/etc.) or list system services"
.Sh SYNOPSIS
.Nm
+.Op Fl j Ao jail name or id Ac
.Fl e
.Nm
+.Op Fl j Ao jail name or id Ac
.Fl R
.Nm
+.Op Fl j Ao jail name or id Ac
.Op Fl v
.Fl l | r
.Nm
+.Op Fl j Ao jail name or id Ac
.Op Fl v
.Ar <rc.d script> start|stop|etc.
.Sh DESCRIPTION
@@ -54,6 +58,8 @@ the scripts using various criteria.
.Pp
The options are as follows:
.Bl -tag -width F1
+.It Fl j Ao jail name or id Ac
+Perform the given actions under the named jail.
.It Fl e
List services that are enabled.
The list of scripts to check is compiled using
@@ -107,6 +113,7 @@ The following are examples of typical usage of the
command:
.Pp
.Dl "service named status"
+.Dl "service -j dns named status"
.Dl "service -rv"
.Pp
The following programmable completion entry can be use in
Modified: stable/11/usr.sbin/service/service.sh
==============================================================================
--- stable/11/usr.sbin/service/service.sh Tue Jan 30 18:29:38 2018 (r328598)
+++ stable/11/usr.sbin/service/service.sh Tue Jan 30 19:16:38 2018 (r328599)
@@ -32,12 +32,13 @@ load_rc_config 'XXX'
usage () {
echo ''
echo 'Usage:'
- echo "${0##*/} -e"
- echo "${0##*/} -R"
- echo "${0##*/} [-v] -l | -r"
- echo "${0##*/} [-v] <rc.d script> start|stop|etc."
+ echo "${0##*/} [-j <jail name or id>] -e"
+ echo "${0##*/} [-j <jail name or id>] -R"
+ echo "${0##*/} [-j <jail name or id>] [-v] -l | -r"
+ echo "${0##*/} [-j <jail name or id>] [-v] <rc.d script> start|stop|etc."
echo "${0##*/} -h"
echo ''
+ echo "-j Perform actions within the named jail"
echo '-e Show services that are enabled'
echo "-R Stop and start enabled $local_startup services"
echo "-l List all scripts in /etc/rc.d and $local_startup"
@@ -46,8 +47,9 @@ usage () {
echo ''
}
-while getopts 'ehlrRv' COMMAND_LINE_ARGUMENT ; do
+while getopts 'j:ehlrRv' COMMAND_LINE_ARGUMENT ; do
case "${COMMAND_LINE_ARGUMENT}" in
+ j) JAIL="${OPTARG}" ;;
e) ENABLED=eopt ;;
h) usage ; exit 0 ;;
l) LIST=lopt ;;
@@ -58,6 +60,22 @@ while getopts 'ehlrRv' COMMAND_LINE_ARGUMENT ; do
esac
done
shift $(( $OPTIND - 1 ))
+
+if [ -n "${JAIL}" ]; then
+ # We need to rebuild the command line before passing it on.
+ # We do not send the -j argument into the jail.
+ args=""
+ [ -n "${ENABLED}" ] && args="${args} -e"
+ [ -n "${LIST}" ] && args="${args} -l"
+ [ -n "${RCORDER}" ] && args="${args} -r"
+ [ -n "${RESTART}" ] && args="${args} -R"
+ [ -n "${VERBOSE}" ] && args="${args} -v"
+
+ # Call jexec(8) with the rebuild args and any positional args that
+ # were left in $@
+ /usr/sbin/jexec -l "${JAIL}" /usr/sbin/service $args "$@"
+ exit $?
+fi
if [ -n "$RESTART" ]; then
skip="-s nostart"
More information about the svn-src-stable
mailing list