I have a problem process that's getting stuck somewhere in its network
code (clearly the right answer is to find/fix the problem, but it's
infrequent and we're up against time constraints...)

I'm looking at just adding a wrapper around it which does something
along the lines of the existing s6 notification - have the supervised
process write a regular character to an inherited fd, if it ever stops
then the wrapper kills everyone and exits allowing the supervision to
restart it.

 What you want is process monitoring. s6 doesn't do that, because
the monitoring needs are very process-specific and it's impossible to
predict all the functionality that every daemon under the sun could
want to use.

 Here, you need a heartbeat. You can implement the heartbeat monitor
as a separate service, which it is: it's a service that reads the
heartbeat from your daemon and sends it an s6-svc -r command when
it fails to receive the heartbeat from a period of time.
 If you don't need anything more than that, you can probably write
the heartbeat monitor in shell (or even in execline!) It's a call
to mkfifo then a read loop. :)


Reply via email to