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