The service 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.
This commit is contained in:
parent
12ea9beca9
commit
3d48282768
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=200743
@ -167,6 +167,7 @@ SUBDIR= ${_ac} \
|
||||
${_sa} \
|
||||
${_sade} \
|
||||
${_sendmail} \
|
||||
service \
|
||||
setfib \
|
||||
setfmac \
|
||||
setpmac \
|
||||
|
7
usr.sbin/service/Makefile
Normal file
7
usr.sbin/service/Makefile
Normal file
@ -0,0 +1,7 @@
|
||||
# $FreeBSD$
|
||||
|
||||
SCRIPTS=service.sh
|
||||
MAN= service.8
|
||||
|
||||
.include <bsd.prog.mk>
|
||||
|
114
usr.sbin/service/service.8
Normal file
114
usr.sbin/service/service.8
Normal file
@ -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> .
|
120
usr.sbin/service/service.sh
Executable file
120
usr.sbin/service/service.sh
Executable file
@ -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
|
Loading…
Reference in New Issue
Block a user