[openwrt/openwrt] base-files: informative service command in /etc/shinit. service command shows services enabled/disabled and running status, when the service command is invoked with no/invalid arguments, like this:

LEDE Commits lede-commits at lists.infradead.org
Fri Dec 4 04:29:21 EST 2020


aparcar pushed a commit to openwrt/openwrt.git, branch master:
https://git.openwrt.org/b4f1f9c9e42fbf9008d165fc32728996b417c599

commit b4f1f9c9e42fbf9008d165fc32728996b417c599
Author: Stan Grishin <stangri at melmac.net>
AuthorDate: Mon Oct 12 22:03:15 2020 +0000

    base-files: informative service command in /etc/shinit. service command shows services enabled/disabled and running status, when the service command is invoked with no/invalid arguments, like this:
    
    Usage: service <service> [command]
    The following services are available:
    /etc/init.d/acme                   enabled         stopped
    /etc/init.d/boot                   enabled         stopped
    /etc/init.d/cron                   enabled         running
    /etc/init.d/dnsmasq                enabled         running
    ...
    
    Signed-off-by: Stan Grishin <stangri at melmac.net>
---
 package/base-files/Makefile         |  2 +-
 package/base-files/files/etc/shinit | 22 +++++++++++++++++-----
 2 files changed, 18 insertions(+), 6 deletions(-)

diff --git a/package/base-files/Makefile b/package/base-files/Makefile
index c06b534bea..0c612b73ca 100644
--- a/package/base-files/Makefile
+++ b/package/base-files/Makefile
@@ -12,7 +12,7 @@ include $(INCLUDE_DIR)/version.mk
 include $(INCLUDE_DIR)/feeds.mk
 
 PKG_NAME:=base-files
-PKG_RELEASE:=238
+PKG_RELEASE:=239
 PKG_FLAGS:=nonshared
 
 PKG_FILE_DEPENDS:=$(PLATFORM_DIR)/ $(GENERIC_PLATFORM_DIR)/base-files/
diff --git a/package/base-files/files/etc/shinit b/package/base-files/files/etc/shinit
index dccba34b69..8c64e81563 100644
--- a/package/base-files/files/etc/shinit
+++ b/package/base-files/files/etc/shinit
@@ -9,12 +9,24 @@ alias ll='ls -alF --color=auto'
 [ -x /usr/bin/ldd ] || ldd() { LD_TRACE_LOADED_OBJECTS=1 $*; }
 
 service() {
-	[ -f "/etc/init.d/$1" ] || {
-		echo "service "'"'"$1"'"'" not found, the following services are available:"
-		ls "/etc/init.d"
+	if [ -f "/etc/init.d/$1" ]; then
+		/etc/init.d/$@
+	else
+		echo "Usage: service <service> [command]"
+		if [ -n "$1" ]; then
+			echo "Service "'"'"$1"'"'" not found, the following services are available:"
+		else
+			echo "The following services are available:"
+		fi
+		for F in /etc/init.d/* ; do
+			printf "%-30s\t%10s\t%10s\n"  "$F" \
+			$( $($F enabled) && echo "enabled" || echo "disabled" ) \
+			$( [ "$(ubus call service list "{ 'verbose': true, 'name': '$(basename $F)' }" \
+			| jsonfilter -q -e "@.$(basename $F).instances[*].running")" = "true" ] \
+			&& echo "running" || echo "stopped" )
+		done;
 		return 1
-	}
-	/etc/init.d/$@
+	fi
 }
 
 [ -n "$KSH_VERSION" -o \! -s "$HOME/.shinit" ] || . "$HOME/.shinit"



More information about the lede-commits mailing list