mirror of
git://git.openwrt.org/openwrt/openwrt.git
synced 2024-12-24 15:43:25 +00:00
base-files,procd: add generic service status
Adds a default status action for init.d scripts. procd "service status" will return: 0) for loaded services (even if disabled by conf or dead) 3) for inactive services 4) when filtering a non-existing instance Signed-off-by: Luiz Angelo Daros de Luca <luizluca@gmail.com> [rebased, cleaned up] Signed-off-by: Petr Štetiar <ynezz@true.cz>
This commit is contained in:
parent
ed5b9129d7
commit
7519a36774
@ -105,9 +105,10 @@ ${INIT_TRACE:+set -x}
|
|||||||
. "$initscript"
|
. "$initscript"
|
||||||
|
|
||||||
[ -n "$USE_PROCD" ] && {
|
[ -n "$USE_PROCD" ] && {
|
||||||
EXTRA_COMMANDS="${EXTRA_COMMANDS} running trace"
|
EXTRA_COMMANDS="${EXTRA_COMMANDS} running status trace"
|
||||||
EXTRA_HELP="\
|
EXTRA_HELP="\
|
||||||
running Check if service is running
|
running Check if service is running
|
||||||
|
status Service status
|
||||||
"
|
"
|
||||||
|
|
||||||
. $IPKG_INSTROOT/lib/functions/procd.sh
|
. $IPKG_INSTROOT/lib/functions/procd.sh
|
||||||
@ -153,6 +154,14 @@ ${INIT_TRACE:+set -x}
|
|||||||
running() {
|
running() {
|
||||||
service_running "$@"
|
service_running "$@"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
status() {
|
||||||
|
if eval "type status_service" 2>/dev/null >/dev/null; then
|
||||||
|
status_service "$@"
|
||||||
|
else
|
||||||
|
_procd_status "$(basename ${basescript:-$initscript})" "$1"
|
||||||
|
fi
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ALL_COMMANDS="start stop reload restart boot shutdown enable disable enabled depends ${EXTRA_COMMANDS}"
|
ALL_COMMANDS="start stop reload restart boot shutdown enable disable enabled depends ${EXTRA_COMMANDS}"
|
||||||
|
@ -443,6 +443,31 @@ _procd_send_signal() {
|
|||||||
_procd_ubus_call signal
|
_procd_ubus_call signal
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_procd_status() {
|
||||||
|
local service="$1"
|
||||||
|
local instance="$2"
|
||||||
|
local data
|
||||||
|
|
||||||
|
json_init
|
||||||
|
[ -n "$service" ] && json_add_string name "$service"
|
||||||
|
|
||||||
|
data=$(_procd_ubus_call list | jsonfilter -e '@["'"$service"'"]')
|
||||||
|
[ -z "$data" ] && { echo "inactive"; return 3; }
|
||||||
|
|
||||||
|
data=$(echo "$data" | jsonfilter -e '$.instances')
|
||||||
|
if [ -z "$data" ]; then
|
||||||
|
[ -z "$instance" ] && { echo "active with no instances"; return 0; }
|
||||||
|
data="[]"
|
||||||
|
fi
|
||||||
|
|
||||||
|
[ -n "$instance" ] && instance="\"$instance\"" || instance='*'
|
||||||
|
if [ -z "$(echo "$data" | jsonfilter -e '$['"$instance"']')" ]; then
|
||||||
|
echo "unknown instance $instance"; return 4
|
||||||
|
else
|
||||||
|
echo "running"; return 0
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
procd_open_data() {
|
procd_open_data() {
|
||||||
local name="$1"
|
local name="$1"
|
||||||
json_set_namespace procd __procd_old_cb
|
json_set_namespace procd __procd_old_cb
|
||||||
|
Loading…
Reference in New Issue
Block a user