From: Daniel F. Dickinson Date: Sun, 28 Apr 2019 20:08:45 +0000 (+0000) Subject: nut: Fix nutmon issues with init X-Git-Url: http://git.99rst.org/?a=commitdiff_plain;h=867ea959a216046a267e832ac07f8fcab99362f0;p=openwrt-packages.git nut: Fix nutmon issues with init NUT's upsmon is rather peculiar in that it has a child process that runs as a regular user and a parent process that runs as root (in order to facilitate shutting down the device if needed). procd doesn't deal well with this and doing 'normal' procd stop / restart / etc results in the child process still hanging around but with not parent, which causes undesired behaviour. Therefore, add the use of 'upsmon -c stop' during process shutdown / restart in order to ensure that upsmon is actually fully stopped. Also fixes nut-monitor going into crashloop on network changes (due to trigger that restarted upsmon but failed due to orphan child from before restart). Signed-off-by: Daniel F. Dickinson --- diff --git a/net/nut/files/nut-monitor.init b/net/nut/files/nut-monitor.init index bc463d7f5..e57a2870b 100755 --- a/net/nut/files/nut-monitor.init +++ b/net/nut/files/nut-monitor.init @@ -148,7 +148,6 @@ nut_upsmon_add() { } build_config() { - local runas=nutmon mkdir -m 0750 -p "$(dirname "$UPSMON_C")" config_load nut_monitor @@ -193,6 +192,7 @@ interface_triggers() { } start_service() { + local runas=nutmon local havemon havems build_config @@ -210,16 +210,9 @@ start_service() { return 0 } -restart() { - trap '' TERM - stop "$@" - sleep 2 - trap - TERM - start "$@" -} - reload_service() { if pgrep upsmon >/dev/null 2>/dev/null; then + local runas=nutmon build_config /usr/sbin/upsmon -c reload else @@ -227,6 +220,10 @@ reload_service() { fi } +stop_service() { + upsmon -c stop +} + service_triggers() { config_load nut_monitor interface_triggers "add_trigger"