Message ID | 1442849183-9418-1-git-send-email-helmut.schaa@googlemail.com |
---|---|
State | RFC |
Headers | show |
Hi, 2015-09-21 17:26 GMT+02:00 Helmut Schaa <helmut.schaa@googlemail.com>: > Extend /etc/config/system with a parameter to enable > infinite respawn mode: > > config system > option service_endless_respawn 1 > why not "service_respawn_retry", which set "respawn_retry" default value (if i want to set 20 instead of -1, so a bad service stop using cpu at one point) > > All services that don't specify specific respawn parameters > will get their defaults added by procd.sh and if service_endless_respawn > is set respawn_retry will be set to -1. This makes procd to > respawn the service forever. > > Signed-off-by: Helmut Schaa <helmut.schaa@googlemail.com> > --- > package/system/procd/files/procd.sh | 12 ++++++++++++ > 1 file changed, 12 insertions(+) > > diff --git a/package/system/procd/files/procd.sh > b/package/system/procd/files/procd.sh > index e83e75c..04111b9 100644 > --- a/package/system/procd/files/procd.sh > +++ b/package/system/procd/files/procd.sh > @@ -316,6 +316,18 @@ _procd_append_param() { > } > > _procd_close_instance() { > + local respawn_vals > + if json_select respawn ; then > + json_get_values respawn_vals > + if [ -z "$respawn_vals" ]; then > + # Set respawn defaults > + local respawn_retry > + [[ -n "$(uci_get system.@system[0].service_endless_respawn)" > ]] && respawn_retry=-1 > + _procd_add_array_data 3600 5 ${respawn_retry:-5} > + fi > + json_select .. > + fi > + > json_close_object > } > > -- > 1.8.4.5 > >
Hi, Helmut On 21 September 2015 at 23:26, Helmut Schaa <helmut.schaa@googlemail.com> wrote: > Extend /etc/config/system with a parameter to enable > infinite respawn mode: > > config system > option service_endless_respawn 1 > > All services that don't specify specific respawn parameters > will get their defaults added by procd.sh and if service_endless_respawn > is set respawn_retry will be set to -1. This makes procd to > respawn the service forever. How about making it a separate section like "config service", then we can later add other default service options, e.g. "limits core=unlimited". > > Signed-off-by: Helmut Schaa <helmut.schaa@googlemail.com> > --- > package/system/procd/files/procd.sh | 12 ++++++++++++ > 1 file changed, 12 insertions(+) > > diff --git a/package/system/procd/files/procd.sh b/package/system/procd/files/procd.sh > index e83e75c..04111b9 100644 > --- a/package/system/procd/files/procd.sh > +++ b/package/system/procd/files/procd.sh > @@ -316,6 +316,18 @@ _procd_append_param() { > } > > _procd_close_instance() { > + local respawn_vals > + if json_select respawn ; then > + json_get_values respawn_vals > + if [ -z "$respawn_vals" ]; then > + # Set respawn defaults > + local respawn_retry > + [[ -n "$(uci_get system.@system[0].service_endless_respawn)" ]] && respawn_retry=-1 I think the convention here is to use "[ ]" instead of "[[ ]]". also please use something like "$(uci -q get ...)" or "$(uci get ... 2>/dev/null)" to squash the possible "Entry not found" error there. Regards, yousong > + _procd_add_array_data 3600 5 ${respawn_retry:-5} > + fi > + json_select .. > + fi > + > json_close_object > } > > -- > 1.8.4.5 > _______________________________________________ > openwrt-devel mailing list > openwrt-devel@lists.openwrt.org > https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel
On Mon, Sep 21, 2015 at 6:14 PM, Yousong Zhou <yszhou4tech@gmail.com> wrote: > Hi, Helmut > > On 21 September 2015 at 23:26, Helmut Schaa <helmut.schaa@googlemail.com> wrote: >> Extend /etc/config/system with a parameter to enable >> infinite respawn mode: >> >> config system >> option service_endless_respawn 1 >> >> All services that don't specify specific respawn parameters >> will get their defaults added by procd.sh and if service_endless_respawn >> is set respawn_retry will be set to -1. This makes procd to >> respawn the service forever. > > How about making it a separate section like "config service", then we > can later add other default service options, e.g. "limits > core=unlimited". Makes sense I guess. >> >> Signed-off-by: Helmut Schaa <helmut.schaa@googlemail.com> >> --- >> package/system/procd/files/procd.sh | 12 ++++++++++++ >> 1 file changed, 12 insertions(+) >> >> diff --git a/package/system/procd/files/procd.sh b/package/system/procd/files/procd.sh >> index e83e75c..04111b9 100644 >> --- a/package/system/procd/files/procd.sh >> +++ b/package/system/procd/files/procd.sh >> @@ -316,6 +316,18 @@ _procd_append_param() { >> } >> >> _procd_close_instance() { >> + local respawn_vals >> + if json_select respawn ; then >> + json_get_values respawn_vals >> + if [ -z "$respawn_vals" ]; then >> + # Set respawn defaults >> + local respawn_retry >> + [[ -n "$(uci_get system.@system[0].service_endless_respawn)" ]] && respawn_retry=-1 > > I think the convention here is to use "[ ]" instead of "[[ ]]". also > please use something like "$(uci -q get ...)" or "$(uci get ... > 2>/dev/null)" to squash the possible "Entry not found" error there. uci_get from /lib/config/uci.sh handles that just fine. Helmut
diff --git a/package/system/procd/files/procd.sh b/package/system/procd/files/procd.sh index e83e75c..04111b9 100644 --- a/package/system/procd/files/procd.sh +++ b/package/system/procd/files/procd.sh @@ -316,6 +316,18 @@ _procd_append_param() { } _procd_close_instance() { + local respawn_vals + if json_select respawn ; then + json_get_values respawn_vals + if [ -z "$respawn_vals" ]; then + # Set respawn defaults + local respawn_retry + [[ -n "$(uci_get system.@system[0].service_endless_respawn)" ]] && respawn_retry=-1 + _procd_add_array_data 3600 5 ${respawn_retry:-5} + fi + json_select .. + fi + json_close_object }
Extend /etc/config/system with a parameter to enable infinite respawn mode: config system option service_endless_respawn 1 All services that don't specify specific respawn parameters will get their defaults added by procd.sh and if service_endless_respawn is set respawn_retry will be set to -1. This makes procd to respawn the service forever. Signed-off-by: Helmut Schaa <helmut.schaa@googlemail.com> --- package/system/procd/files/procd.sh | 12 ++++++++++++ 1 file changed, 12 insertions(+)