Skip to content

Commit

Permalink
procd: move service command to procd
Browse files Browse the repository at this point in the history
The service command belongs to the procd and does not belong in the
shinit. In the course of the move, the script was also checked with
shellcheck and cleaned up.

Signed-off-by: Florian Eckert <fe@dev.tdt.de>
  • Loading branch information
feckert authored and hauke committed Mar 19, 2022
1 parent b04d38a commit b901738
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 21 deletions.
21 changes: 0 additions & 21 deletions package/base-files/files/etc/shinit
Expand Up @@ -8,26 +8,5 @@ alias ll='ls -alF --color=auto'
[ -x /usr/bin/arp -o -x /sbin/arp ] || arp() { cat /proc/net/arp; }
[ -x /usr/bin/ldd ] || ldd() { LD_TRACE_LOADED_OBJECTS=1 $*; }

service() {
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" | uniq)" = "true" ] \
&& echo "running" || echo "stopped" )
done;
return 1
fi
}

[ -n "$KSH_VERSION" -o \! -s "$HOME/.shinit" ] || . "$HOME/.shinit"
[ -z "$KSH_VERSION" -o \! -s "$HOME/.mkshrc" ] || . "$HOME/.mkshrc"
1 change: 1 addition & 0 deletions package/system/procd/Makefile
Expand Up @@ -121,6 +121,7 @@ define Package/procd/install
$(INSTALL_BIN) ./files/reload_config $(1)/sbin/
$(INSTALL_CONF) ./files/hotplug*.json $(1)/etc/
$(INSTALL_DATA) ./files/procd.sh $(1)/lib/functions/
$(INSTALL_BIN) ./files/service $(1)/sbin/service
endef

Package/procd-selinux/install = $(Package/procd/install)
Expand Down
30 changes: 30 additions & 0 deletions package/system/procd/files/service
@@ -0,0 +1,30 @@
#!/bin/sh

main() {
local service="$1"
local cmd="$2"

local boot status

if [ -f "/etc/init.d/${service}" ]; then
/etc/init.d/"${service}" "${cmd}"
exit "$?"
fi

if [ -n "$service" ]; then
echo "Service \"$1\" not found:"
exit 1
fi

echo "Usage: $(basename "$0") <service> [command]"
for service in /etc/init.d/* ; do
boot="$($service enabled && echo "enabled" || echo "disabled" )"
status="$( [ "$(ubus call service list "{ 'verbose': true, 'name': '$(basename "$service")' }" \
| jsonfilter -q -e "@['$(basename "$service")'].instances[*].running" | uniq)" = "true" ] \
&& echo "running" || echo "stopped" )"

printf "%-30s\\t%10s\\t%10s\\n" "$service" "$boot" "$status"
done
}

main "$@"

0 comments on commit b901738

Please sign in to comment.