summaryrefslogtreecommitdiffstats
path: root/usr.sbin/service
diff options
context:
space:
mode:
Diffstat (limited to 'usr.sbin/service')
-rw-r--r--usr.sbin/service/Makefile7
-rw-r--r--usr.sbin/service/service.8114
-rwxr-xr-xusr.sbin/service/service.sh120
3 files changed, 241 insertions, 0 deletions
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
OpenPOWER on IntegriCloud