On Feb 16, 2012, at 2:39 PM, McCann, Brian wrote:
> So I got my UPS working. I'm trying to get NUT to run under
daemontools . upsd and upsmon all seem to stay in the foreground when I add -D
to them but upsdrvctl doesn't. Does anyone know if there's a hidden
switch or something to make it stay in the foreground? The reason I want to use
daemontools is so that if the process crashes, daemontools will just start it
right back up again. I run just about everything (Apache HTTPD is the only
thing I have so far that won't stay in the foreground) under daemontools.
Much easier to check the status of all my services too.
The upsdrvctl binary is really just a convenience tool for rc.d scripts. As you
may have seen when you pass -D (maybe several -Ds?), it prints the arguments
that it will use to launch the driver(s). There is not much else to it - just a
timer to make sure the driver isn't taking too long to launch. Drivers
normally only go into the background after establishing a connection to the UPS
hardware, but under daemontools, you would defeat that with -D (as you did with
upsd and upsmon).
In order for daemontools to re-launch only the driver which crashes, it needs to
monitor each driver separately. In that case, I would recommend bypassing
upsdrvctl, and creating a separate daemontools service per driver. For my test
system, the driver arguments would be "/lib/nut/tripplite_usb -a tripplite
-D", but as I mentioned, upsdrvctl can print that.
--
Charles Lepple
clepple at gmail