From: David van Moolenbroek Date: Thu, 23 Feb 2017 11:40:08 +0000 (+0000) Subject: Import NetBSD service(8) X-Git-Url: http://zhaoyanbai.com/repos/Bv9ARM.ch13.html?a=commitdiff_plain;h=92bce8625855044cc134f0d80d1ca171a0a030e6;p=minix.git Import NetBSD service(8) Change-Id: I48a4958424ebcdbd279b11e5425a6cd1b4a73121 --- diff --git a/distrib/sets/lists/minix-base/mi b/distrib/sets/lists/minix-base/mi index 3ae147d0f..d99fbcaf3 100644 --- a/distrib/sets/lists/minix-base/mi +++ b/distrib/sets/lists/minix-base/mi @@ -1031,6 +1031,7 @@ ./usr/sbin/postinstall minix-base ./usr/sbin/pwd_mkdb minix-base ./usr/sbin/rdate minix-base +./usr/sbin/service minix-base ./usr/sbin/services_mkdb minix-base ./usr/sbin/syslogd minix-base ./usr/sbin/traceroute minix-base diff --git a/distrib/sets/lists/minix-man/mi b/distrib/sets/lists/minix-man/mi index 27607620e..42a2c0425 100644 --- a/distrib/sets/lists/minix-man/mi +++ b/distrib/sets/lists/minix-man/mi @@ -3445,7 +3445,7 @@ ./usr/man/man8/rshd.8 minix-man ./usr/man/man8/screendump.8 minix-man ./usr/man/man8/serial-ip.8 minix-man obsolete -./usr/man/man8/service.8 minix-man obsolete +./usr/man/man8/service.8 minix-man ./usr/man/man8/services_mkdb.8 minix-man ./usr/man/man8/setup.8 minix-man ./usr/man/man8/shutdown.8 minix-man diff --git a/usr.sbin/Makefile b/usr.sbin/Makefile index ff2002184..9f390779e 100644 --- a/usr.sbin/Makefile +++ b/usr.sbin/Makefile @@ -24,7 +24,7 @@ SUBDIR= \ \ rdate \ \ - services_mkdb \ + service services_mkdb \ \ syslogd \ traceroute \ diff --git a/usr.sbin/service/Makefile b/usr.sbin/service/Makefile new file mode 100644 index 000000000..d562d46af --- /dev/null +++ b/usr.sbin/service/Makefile @@ -0,0 +1,9 @@ +# $NetBSD: Makefile,v 1.1 2015/03/22 09:57:42 ast Exp $ + +FILES= service +MAN= service.8 + +FILESDIR= /usr/sbin +FILESMODE= ${BINMODE} + +.include diff --git a/usr.sbin/service/service b/usr.sbin/service/service new file mode 100644 index 000000000..bf5310a71 --- /dev/null +++ b/usr.sbin/service/service @@ -0,0 +1,126 @@ +#!/bin/sh +# $NetBSD: service,v 1.7 2015/04/05 11:33:15 apb Exp $ +# service -- run or list system services +# +# Taken from FreeBSD: releng/10.1/usr.sbin/service/service.sh 268098 +# Modified for NetBSD by Adrian Steinmann in March, 2015 +# +# Copyright (c) 2009 Douglas Barton +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +# SUCH DAMAGE. + +export PATH=/sbin:/bin:/usr/sbin:/usr/bin + +usage () +{ + local me="${0##*/}" + echo "usage: ${me} [-elv]" + echo " ${me} [-ev] rc_script_name [rc_script_name2 [...]]" + echo " ${me} [-v] rc_script_name action" + echo " -e: List enabled scripts; check if given scripts are enabled" + echo " -l: List all scripts in rcorder" + echo " -v: Verbose (mention in which directory script is found)" + echo "rc_directories is currently set to ${rc_directories}" + exit 1 +} + +# list all files in rc_directories with absolute pathnames +# written to be compatible with ls(1) from pre netbsd-7 +_rc_files() +{ + local _d _f + for _d in ${rc_directories}; do + if [ -d "$_d" ]; then + for _f in "$_d"/*; do + [ -f "$_f" -a -x "$_f" ] && echo "$_f" + done + fi + done | xargs rcorder -s nostart ${rc_rcorder_flags} 2>/dev/null + return 0 +} + +while getopts elv o; do + case "$o" in + e) ENABLED=1 ;; + l) LIST=1 ;; + v) VERBOSE=1 ;; + *) usage ;; + esac +done +shift $( expr $OPTIND - 1 ) + +[ -n "${ENABLED}" -a -n "${LIST}" ] && usage + +. /etc/rc.subr +load_rc_config : + +if [ -n "${ENABLED}" ]; then + [ -n "${VERBOSE}" ] && echo "rc_directories is ${rc_directories}" >&2 + flt=cat + if [ $# -gt 0 ] + then + flt=$( echo $* | sed -e 's; ;|;g' -e 's;^;egrep /(;' -e 's;$;)$;' ) + fi + _rc_files | $flt | while read file + do + if grep -q ^rcvar "$file"; then + eval $( grep ^name= "$file" ) + eval $( grep ^rcvar "$file" ) + if [ -n "${rcvar}" ]; then + load_rc_config ${rcvar} + checkyesno ${rcvar} 2>/dev/null && echo ${file} + fi + fi + done + exit 0 +fi + +if [ -n "${LIST}" ]; then + [ -n "${VERBOSE}" ] && echo "rc_directories is ${rc_directories}" >&2 + _rc_files + exit 0 +fi + +if [ $# -eq 2 ]; then + script=$1 + arg=$2 +else + usage +fi + +for dir in ${rc_directories}; do + if [ -x "${dir}/${script}" ]; then + [ -n "${VERBOSE}" ] && echo "${script} is located in ${dir}" >&2 + # run as in /etc/rc + cd / + umask 022 + exec env -i \ + HOME=/ PATH=/sbin:/bin:/usr/sbin:/usr/bin \ + "${dir}/${script}" "${arg}" + echo "Failed to exec ${dir}/${script} ${arg}" >&2 + exit 255 + fi +done + +echo "${script} does not exist in ${rc_directories}" >&2 +exit 1 diff --git a/usr.sbin/service/service.8 b/usr.sbin/service/service.8 new file mode 100644 index 000000000..faf62f458 --- /dev/null +++ b/usr.sbin/service/service.8 @@ -0,0 +1,173 @@ +.\" $NetBSD: service.8,v 1.4 2015/04/02 18:41:22 ast Exp $ +.\" +.\" Copyright (c) 2009 Douglas Barton +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.Dd March 20, 2015 +.Dt SERVICE 8 +.Os +.Sh NAME +.Nm service +.Nd run or list system services +.Sh SYNOPSIS +.Nm +.Op Fl elv +.Nm +.Op Fl ev +.Ar rc_script_name1 Op Ar rc_script_name2 Op Ar ... +.Nm +.Op Fl v +.Ar rc_script_name action +.Sh DESCRIPTION +The +.Nm +command is a simple interface to the services startup system. +.Pp +Its purpose is to list the services or invoke actions on them +as provided by the +.Ev rc.d +scripts. +When used to invoke +.Ev rc.d +scripts, +.Nm +will set the same environment that is used at boot time. +.Pp +The options are as follows: +.Bl -tag -width F1 +.It Fl e +List services that are enabled. +The list of scripts is compiled using +.Xr rcorder 8 +the same way as is done in +.Xr rc 8 ; +each script is first checked for an +.Qq rcvar +assignment and if present, +checked to see if it is enabled. +If one or more +.Ar rc_script_name +are specified, only those are checked. +The +.Ar rc_script_name +arguments are always specified without a path prefix. +.It Fl l +List all files in +.Pa /etc/rc.d +(the default of +.Ev rc_directories as defined in +.Xr rc.conf 5 ) . +A script will be listed unless it has the +.Qq nostart +keyword enabled. +.It Fl v +Report what +.Ev rc_directories +are defined or in which directory the +.Ev rc.d script +was found when an +.Ar action +is invoked. +.El +.Sh ENVIRONMENT +When used to invoke +.Ev rc.d scripts, the +.Nm +command sets +.Ev umask +to +.Fa 022 , +.Ev HOME +to +.Pa / , +and +.Ev PATH +to +.Pa /sbin:/bin:/usr/sbin:/usr/bin +which is how they are set in +.Pa /etc/rc +at boot time. +The +.Ar action +is typically one of +.Ar start , +.Ar restart , +.Ar status , +or any other argument supported by the +.Fa rc_script_name . +.Sh EXIT STATUS +.Ex -std +.Sh EXAMPLES +These are typical usages of the +.Nm +command: +.Bd -literal +# service sshd restart +Stopping sshd. +Starting sshd. +.Ed +.Bd -literal +$ service -v inetd status +inetd is located in /etc/rc.d +inetd is running as pid 1713. +.Ed +.Bd -literal +$ service -ve ccd motd hostapd my_pkg +rc_directories is /etc/rc.d /usr/pkg/etc/rc.d +/etc/rc.d/ccd +/usr/pkg/etc/rc.d/my_pkg +/etc/rc.d/motd +.Ed +.Pp +In the last example, +.Xr hostapd 8 +was apparently left disabled and the additional directory +.Pa /usr/pkg/etc/rc.d +was configured by redefining the variable +.Ev rc_directories +in +.Pa rc.conf ; +further, +.Sy my_pkg=yes +must have also been set. +.Sh SEE ALSO +.Xr rc.conf 5 , +.Xr rc 8 , +.Xr rcorder 8 +.Sh HISTORY +The +.Nm +utility first appeared in +.Nx 7.0 . +.Sh AUTHORS +.An -nosplit +Written for +.Fx +by +.An Douglas Barton Aq Mt dougb@FreeBSD.org . +.Pp +Adapted and extended to +.Nx +by +.An Adrian Steinmann Aq Mt ast@marabu.ch .