X-Git-Url: http://git.openwrt.org/?a=blobdiff_plain;f=package%2Fsystem%2Fprocd%2Ffiles%2Fprocd.sh;h=e6ca8a6bc924fe65d8832f96a203d0a6edabf987;hb=c58e824acc3c5fcac6ce91584eaf704e99be52ef;hp=d2c5b424a7f88e45568c81177078116128f39e7a;hpb=b22a20af450b19fb47235e684afcddb301221def;p=openwrt%2Fopenwrt.git diff --git a/package/system/procd/files/procd.sh b/package/system/procd/files/procd.sh index d2c5b424a7..e6ca8a6bc9 100644 --- a/package/system/procd/files/procd.sh +++ b/package/system/procd/files/procd.sh @@ -29,6 +29,9 @@ # procd_kill(service, [instance]): # Kill a service instance (or all instances) # +# procd_send_signal(service, [instance], [signal]) +# Send a signal to a service instance (or all instances) +# . $IPKG_INSTROOT/usr/share/libubox/jshn.sh @@ -210,9 +213,12 @@ _procd_set_param() { json_add_string "" "$@" json_close_array ;; - nice|reload_signal) + nice) json_add_int "$type" "$1" ;; + reload_signal) + json_add_int "$type" $(kill -l "$1") + ;; pidfile|user|seccomp|capabilities) json_add_string "$type" "$1" ;; @@ -245,9 +251,8 @@ _procd_add_interface_trigger() { json_close_array json_close_array - json_close_array - _procd_add_timeout + json_close_array } _procd_add_reload_interface_trigger() { @@ -277,10 +282,8 @@ _procd_add_config_trigger() { json_close_array json_close_array - - json_close_array - _procd_add_timeout + json_close_array } _procd_add_raw_trigger() { @@ -348,8 +351,10 @@ _procd_close_instance() { if json_select respawn ; then json_get_values respawn_vals if [ -z "$respawn_vals" ]; then + local respawn_threshold=$(uci_get system.@service[0].respawn_threshold) + local respawn_timeout=$(uci_get system.@service[0].respawn_timeout) local respawn_retry=$(uci_get system.@service[0].respawn_retry) - _procd_add_array_data 3600 5 ${respawn_retry:-5} + _procd_add_array_data ${respawn_threshold:-3600} ${respawn_timeout:-5} ${respawn_retry:-5} fi json_select .. fi @@ -373,6 +378,18 @@ _procd_kill() { _procd_ubus_call delete } +_procd_send_signal() { + local service="$1" + local instance="$2" + local signal="$3" + + json_init + json_add_string name "$service" + [ -n "$instance" -a "$instance" != "*" ] && json_add_string instance "$instance" + [ -n "$signal" ] && json_add_int signal "$signal" + _procd_ubus_call signal +} + procd_open_data() { local name="$1" json_set_namespace procd __procd_old_cb @@ -406,7 +423,7 @@ procd_add_mdns_service() { json_add_int port "$port" [ -n "$1" ] && { json_add_array txt - for txt in $@; do json_add_string "" $txt; done + for txt in "$@"; do json_add_string "" "$txt"; done json_select .. } json_select .. @@ -415,7 +432,7 @@ procd_add_mdns_service() { procd_add_mdns() { procd_open_data json_add_object "mdns" - procd_add_mdns_service $@ + procd_add_mdns_service "$@" json_close_object procd_close_data } @@ -457,4 +474,5 @@ _procd_wrapper \ procd_append_param \ procd_add_validation \ procd_set_config_changed \ - procd_kill + procd_kill \ + procd_send_signal