Re: Supervising a pipeline?

From: Jonathan de Boyne Pollard <>
Date: Tue, 19 Jan 2016 07:38:22 +0000

Laurent Bercot:

> You can't supervise a pipeline per se; you need to supervise both
> processes in the pipeline independently, and make sure the pipe isn't
> broken when one of them dies.
> So, have "exec inotifywait /dev/disk" as foobar/run, and have "exec
>" as foobar/log/run. This will work with daemontools,
> runit and s6. (You can accomplish the same goal with perp and nosh
> too; the syntax will just be different.)

Actually, the syntax for nosh can be exactly as described: something/run
and something/log/run . It's not ideal, because of course then there's
no properly separated logging of the automounter.

Laurent Bercot:

> Alternatively, you could use s6-rc and create the "inotifywait" and
> "automounter" longrun services in a pipeline; your compiled database
> would then include instructions to set up the supervised pipeline for
> you. This is more complex to set up than just using the integrated
> pipe management in svscan and runsvdir, but it's also more powerful,
> because you can pipeline an arbitrary number of processes that way
> (this is also what nosh does).

Yes: The nosh toolkit makes this extensible. The aforegiven
configuration is enacted by the daemontools service scanner. The
underlying service management supports arbitrarily long pipelines of
services, each one's standard output and standard error feeding into the
standard input of the next one along. The system-control utility looks
at the "log" symbolic links of whatever collection of services it is
operating upon and sends a "plumb services together" order to the
service manager. So one could construct a 3-service long pipeline:
inotifywait into Python program into cyclog instance.
Received on Tue Jan 19 2016 - 07:38:22 UTC

This archive was generated by hypermail 2.3.0 : Sun May 09 2021 - 19:44:19 UTC