From 867ea959a216046a267e832ac07f8fcab99362f0 Mon Sep 17 00:00:00 2001 From: "Daniel F. Dickinson" Date: Sun, 28 Apr 2019 20:08:45 +0000 Subject: [PATCH] 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 --- net/nut/files/nut-monitor.init | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) 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"