The branch main has been updated by imp:

URL: 
https://cgit.FreeBSD.org/src/commit/?id=37983aef7c70b738cf63923bcfd2c4ae03ac5779

commit 37983aef7c70b738cf63923bcfd2c4ae03ac5779
Author:     Dan Mahoney <git...@gushi.org>
AuthorDate: 2025-05-25 08:54:33 +0000
Commit:     Warner Losh <i...@freebsd.org>
CommitDate: 2025-06-11 23:16:21 +0000

    Add quiet/-q option to /usr/sbin/service
    
    Signed-off-by: Dan Mahoney <free...@gushi.org>
    Reviewed by: imp
    Pull Request: https://github.com/freebsd/freebsd-src/pull/1709
    Closes: https://github.com/freebsd/freebsd-src/pull/1709
---
 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 a8f1a509885f..b8917138f478 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 v
+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
 

Reply via email to