diff options
-rw-r--r-- | usr.sbin/Makefile | 1 | ||||
-rw-r--r-- | usr.sbin/service/Makefile | 7 | ||||
-rw-r--r-- | usr.sbin/service/service.8 | 114 | ||||
-rwxr-xr-x | usr.sbin/service/service.sh | 120 |
4 files changed, 242 insertions, 0 deletions
diff --git a/usr.sbin/Makefile b/usr.sbin/Makefile index f430b33..f3e0a1b 100644 --- a/usr.sbin/Makefile +++ b/usr.sbin/Makefile @@ -167,6 +167,7 @@ SUBDIR= ${_ac} \ ${_sa} \ ${_sade} \ ${_sendmail} \ + service \ setfib \ setfmac \ setpmac \ diff --git a/usr.sbin/service/Makefile b/usr.sbin/service/Makefile new file mode 100644 index 0000000..a03714d --- /dev/null +++ b/usr.sbin/service/Makefile @@ -0,0 +1,7 @@ +# $FreeBSD$ + +SCRIPTS=service.sh +MAN= service.8 + +.include <bsd.prog.mk> + diff --git a/usr.sbin/service/service.8 b/usr.sbin/service/service.8 new file mode 100644 index 0000000..5ae30ba --- /dev/null +++ b/usr.sbin/service/service.8 @@ -0,0 +1,114 @@ +.\" 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. +.\" +.\" $FreeBSD$ +.\" +.Dd December 19, 2009 +.Dt service 8 +.Os +.Sh NAME +.Nm service +.Nd "service command manual page" +.Sh SYNOPSIS +.Nm +.Fl e +.Nm +.Op Fl v +.Fl l|r +.Nm +.Op Fl v +.Ar <rc.d script> start|stop|etc. +.Sh DESCRIPTION +The +.Nm +command is an easy interface to the rc.d system. +Its primary purpose is to start and stop services provided +by the rc.d scripts, however it can also be used to list +the scripts using various criteria. +.Pp +The options are as follows: +.Bl -tag -width F1 +.It Fl e +List services that are enabled. +The list of scripts to check is compiled using +.Xr rcorder 8 +the same way that it is done in +.Xr rc 8 , +then that list of scripts is checked for an +.Qq rcvar +assignment. +If present the script is checked to see if it is enabled. +.It Fl l +List all files in +.Pa /etc/rc.d +and the local startup directories. +As described in +.Xr rc.conf 5 +this is usually +.Pa /usr/local/etc/rc.d . +All files will be listed whether they are an actual +rc.d script or not. +.It Fl r +Generate the +.Xr rcorder 8 +as in +.Fl e +above, but list all of the files, not just what is enabled. +.It Fl v +Be slightly more verbose +.El +.Sh EXIT STATUS +.Ex -std +.Sh EXAMPLES +The following are examples of typical usage of the +.Nm +command: +.Pp +.Dl "service named status" +.Dl "service -rv" +.Pp +The following programmable completion entry can be use in +.Xr bash 1 +for the names of the rc.d scripts: +.Dl "_service () {" +.Dl " local cur" +.Dl " cur=${COMP_WORDS[COMP_CWORD]}" +.Dl " COMPREPLY=( $( compgen -W '$( service -l )' -- $cur ) )" +.Dl " return 0" +.Dl "}" +.Dl "complete -F _service service" +.Sh SEE ALSO +.Xr bash 1 , +.Xr rc.conf 5 . +.Xr rc 8 , +.Xr rcorder 8 +.Sh HISTORY +The +.Nm +manual page service first appeared in +.Fx 7.3 . +.Sh AUTHORS +This +manual page was written by +.An Douglas Barton <dougb@FreeBSD.org> . diff --git a/usr.sbin/service/service.sh b/usr.sbin/service/service.sh new file mode 100755 index 0000000..2885f81 --- /dev/null +++ b/usr.sbin/service/service.sh @@ -0,0 +1,120 @@ +#!/bin/sh + +# $FreeBSD$ + +# 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. + +. /etc/rc.subr +load_rc_config 'XXX' + +usage () { + echo '' + echo 'Usage:' + echo "${0##*/} -e" + echo "${0##*/} [-v] -l|r" + echo "${0##*/} [-v] <rc.d script> start|stop|etc." + echo "${0##*/} -h" + echo '' + echo '-e Show services that are enabled' + echo "-l List all scripts in /etc/rc.d and $local_startup" + echo '-r Show the results of boot time rcorder' + echo '-v Verbose' + echo '' +} + +while getopts 'ehlrv' COMMAND_LINE_ARGUMENT ; do + case "${COMMAND_LINE_ARGUMENT}" in + e) ENABLED=eopt ;; + h) usage ; exit 0 ;; + l) LIST=lopt ;; + r) RCORDER=ropt ;; + v) VERBOSE=vopt ;; + *) usage ; exit 1 ;; + esac +done +shift $(( $OPTIND - 1 )) + +if [ -n "$ENABLED" -o -n "$RCORDER" ]; then + # Copied from /etc/rc + skip="-s nostart" + if [ `/sbin/sysctl -n security.jail.jailed` -eq 1 ]; then + skip="$skip -s nojail" + fi + [ -n "$local_startup" ] && find_local_scripts_new + files=`rcorder ${skip} /etc/rc.d/* ${local_rc} 2>/dev/null` +fi + +if [ -n "$ENABLED" ]; then + for file in $files; do + if grep -q ^rcvar $file; then + eval `grep ^name= $file` + eval `grep ^rcvar $file` + checkyesno $rcvar 2>/dev/null && echo $file + fi + done + exit 0 +fi + +if [ -n "$LIST" ]; then + for dir in /etc/rc.d $local_startup; do + [ -n "$VERBOSE" ] && echo "From ${dir}:" + cd $dir && for file in *; do echo $file; done + done + exit 0 +fi + +if [ -n "$RCORDER" ]; then + for file in $files; do + echo $file + if [ -n "$VERBOSE" ]; then + case "$file" in + */${early_late_divider}) + echo '========= Early/Late Divider =========' ;; + esac + fi + done + exit 0 +fi + +if [ $# -gt 1 ]; then + script=$1 + shift +else + usage + exit 1 +fi + +for dir in /etc/rc.d $local_startup; do + if [ -x "$dir/$script" ]; then + [ -n "$VERBOSE" ] && echo "$script is located in $dir" + $dir/$script $* + exit $? + fi +done + +# If the script was not found +echo "$script does not exist in /etc/rc.d or the local startup" +echo "directories (${local_startup})" +exit 1 |