git: 68669e92f5d2 - stable/14 - Add quiet/-q option to /usr/sbin/service
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Mon, 11 Aug 2025 19:22:28 UTC
The branch stable/14 has been updated by des:
URL: https://cgit.FreeBSD.org/src/commit/?id=68669e92f5d2b883c0e2efaceaa1acc74424cd7b
commit 68669e92f5d2b883c0e2efaceaa1acc74424cd7b
Author: Dan Mahoney <github@gushi.org>
AuthorDate: 2025-05-25 08:54:33 +0000
Commit: Dag-Erling Smørgrav <des@FreeBSD.org>
CommitDate: 2025-08-11 14:31:25 +0000
Add quiet/-q option to /usr/sbin/service
Signed-off-by: Dan Mahoney <freebsd@gushi.org>
Reviewed by: imp
Pull Request: https://github.com/freebsd/freebsd-src/pull/1709
Closes: https://github.com/freebsd/freebsd-src/pull/1709
(cherry picked from commit 37983aef7c70b738cf63923bcfd2c4ae03ac5779)
service: Fix repeated -v in man page
Fix accidental repeated -v for -q.
Fixes: 37983aef7c70
Noticed by: Gary Jennejohn
(cherry picked from commit 8fa4a4eb705ccaece5aac4ae1201034001f21313)
---
usr.sbin/service/service.8 | 3 +++
usr.sbin/service/service.sh | 23 +++++++++++++++++++----
2 files changed, 22 insertions(+), 4 deletions(-)
diff --git a/usr.sbin/service/service.8 b/usr.sbin/service/service.8
index 7528fa04b0f1..67597bf9258e 100644
--- a/usr.sbin/service/service.8
+++ b/usr.sbin/service/service.8
@@ -45,6 +45,7 @@
.Fl r
.Nm
.Op Fl j Ar jail
+.Op Fl q
.Op Fl v
.Op Fl E Ar var=value
.Ar script
@@ -115,6 +116,8 @@ as in
above, but list all of the files, not just what is enabled.
.It Fl v
Be slightly more verbose.
+.It Fl q
+Be quiet, redirecting output to /dev/null.
.El
.Sh ENVIRONMENT
When used to run rc.d scripts the
diff --git a/usr.sbin/service/service.sh b/usr.sbin/service/service.sh
index 8b7aa937967b..5f456418da49 100755
--- a/usr.sbin/service/service.sh
+++ b/usr.sbin/service/service.sh
@@ -44,17 +44,19 @@ usage () {
echo "-R Stop and start enabled $local_startup services"
echo "-l List all scripts in /etc/rc.d and $local_startup"
echo '-r Show the results of boot time rcorder'
+ echo '-q quiet'
echo '-v Verbose'
echo ''
}
-while getopts 'j:E:ehlrRv' COMMAND_LINE_ARGUMENT ; do
+while getopts 'j:E:ehlqrRv' COMMAND_LINE_ARGUMENT ; do
case "${COMMAND_LINE_ARGUMENT}" in
j) JAIL="${OPTARG}" ;;
E) VARS="${VARS} ${OPTARG}" ;;
e) ENABLED=eopt ;;
h) usage ; exit 0 ;;
l) LIST=lopt ;;
+ q) QUIET=qopt ;;
r) RCORDER=ropt ;;
R) RESTART=Ropt ;;
v) VERBOSE=vopt ;;
@@ -69,6 +71,7 @@ if [ -n "${JAIL}" ]; then
args=""
[ -n "${ENABLED}" ] && args="${args} -e"
[ -n "${LIST}" ] && args="${args} -l"
+ [ -n "${QUIET}" ] && args="${args} -q"
[ -n "${RCORDER}" ] && args="${args} -r"
[ -n "${RESTART}" ] && args="${args} -R"
[ -n "${VERBOSE}" ] && args="${args} -v"
@@ -100,14 +103,22 @@ if [ -n "$RESTART" ]; then
if [ -n "$rcvar" ]; then
load_rc_config_var ${name} ${rcvar}
fi
- checkyesno $rcvar 2>/dev/null && run_rc_script ${file} stop
+ if [ -n "$QUIET" ]; then
+ checkyesno $rcvar 2>/dev/null && run_rc_script ${file} stop >/dev/null 2>&1
+ else
+ checkyesno $rcvar 2>/dev/null && run_rc_script ${file} stop
+ fi
fi
done
for file in $files; do
if grep -q ^rcvar $file; then
eval `grep ^name= $file`
eval `grep ^rcvar $file`
- checkyesno $rcvar 2>/dev/null && run_rc_script ${file} start
+ if [ -n "$QUIET" ]; then
+ checkyesno $rcvar 2>/dev/null && run_rc_script ${file} start >/dev/null 2>&1
+ else
+ checkyesno $rcvar 2>/dev/null && run_rc_script ${file} start
+ fi
fi
done
@@ -174,7 +185,11 @@ cd /
for dir in /etc/rc.d $local_startup; do
if [ -x "$dir/$script" ]; then
[ -n "$VERBOSE" ] && echo "$script is located in $dir"
- exec /usr/bin/env -i -L -/daemon HOME=/ PATH=/sbin:/bin:/usr/sbin:/usr/bin ${VARS} "$dir/$script" "$@"
+ if [ -n "$QUIET" ]; then
+ exec /usr/bin/env -i -L -/daemon HOME=/ PATH=/sbin:/bin:/usr/sbin:/usr/bin ${VARS} "$dir/$script" "$@" > /dev/null 2>&1
+ else
+ exec /usr/bin/env -i -L -/daemon HOME=/ PATH=/sbin:/bin:/usr/sbin:/usr/bin ${VARS} "$dir/$script" "$@"
+ fi
fi
done