bin/161028: [PATCH] usr.sbin/service/ -- Minor improvements
Martin Tournoij
martin at arp242.net
Mon Sep 26 05:00:25 UTC 2011
>Number: 161028
>Category: bin
>Synopsis: [PATCH] usr.sbin/service/ -- Minor improvements
>Confidential: no
>Severity: non-critical
>Priority: low
>Responsible: freebsd-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: change-request
>Submitter-Id: current-users
>Arrival-Date: Mon Sep 26 05:00:21 UTC 2011
>Closed-Date:
>Last-Modified:
>Originator: Martin
>Release: FreeBSD 9.0-BETA3 amd64
>Organization:
>Environment:
System: FreeBSD thinkpad 9.0-BETA3 FreeBSD 9.0-BETA3 #0: Sat Sep 24 08:53:22 CEST 2011 martin at thinkpad:/usr/obj/usr/src/sys/GENERIC amd64
>Description:
Minor update to /usr/sbin/service
- Add -s commands shows the status of the scripts.
- Update manpage
>How-To-Repeat:
>Fix:
--- service.diff begins here ---
diff -u usr.sbin/service.orig/service.8 usr.sbin/service/service.8
--- usr.sbin/service.orig/service.8 2011-09-26 05:16:50.000000000 +0200
+++ usr.sbin/service/service.8 2011-09-26 05:12:35.000000000 +0200
@@ -62,6 +62,9 @@
.Qq rcvar
assignment.
If present the script is checked to see if it is enabled.
+.It Fl s
+Check the status of all the services that are enabled. You need to be root to
+execute this.
.It Fl l
List all files in
.Pa /etc/rc.d
@@ -115,8 +118,14 @@
.Dl " return 0"
.Dl "}"
.Dl "complete -F _service service"
+.Pp
+Or for
+.Xr tcsh 1
+you can use:
+.Dl complete service 'n/*/`service -l`/'
.Sh SEE ALSO
.Xr bash 1 Pq Pa ports/shells/bash ,
+.Xr tcsh 1 ,
.Xr rc.conf 5 ,
.Xr rc 8 ,
.Xr rcorder 8
diff -u usr.sbin/service.orig/service.sh usr.sbin/service/service.sh
--- usr.sbin/service.orig/service.sh 2011-09-26 05:16:50.000000000 +0200
+++ usr.sbin/service/service.sh 2011-09-26 05:15:32.000000000 +0200
@@ -33,20 +33,23 @@
echo ''
echo 'Usage:'
echo "${0##*/} -e"
+ echo "${0##*/} -s"
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 '-s Show status of enabled services'
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
+while getopts 'eshlrv' COMMAND_LINE_ARGUMENT ; do
case "${COMMAND_LINE_ARGUMENT}" in
e) ENABLED=eopt ;;
+ s) ENABLED=sopt ;;
h) usage ; exit 0 ;;
l) LIST=lopt ;;
r) RCORDER=ropt ;;
@@ -67,11 +70,22 @@
fi
if [ -n "$ENABLED" ]; then
+ if [ "$ENABLED" = "sopt" ] && [ `id -u` -ne 0 ]; then
+ echo "You need to be root to use -s"
+ exit 1
+ fi
+
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
+ if [ "$ENABLED" = "eopt" ]; then
+ checkyesno $rcvar 2>/dev/null && echo $file
+ else
+ if grep -q ^pidfile= $file; then
+ checkyesno $rcvar 2>/dev/null && echo -n "${file}: " && $file status && echo ""
+ fi
+ fi
fi
done
exit 0
--- service.diff ends here ---
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-bugs
mailing list