s6
Software
skarnet.org
 The s6-svlisten1 program 
 s6-svlisten1 runs a program while listening on notifications from a
supervised service, and blocks until said service goes up, or down.
 s6-svlisten1 only waits for notifications; it never polls.
 Interface 
     s6-svlisten1 [ -U | -u | -D | -d | -r | -R ] [ -t timeout ] servicedir prog...
 -  s6-svlisten1 checks the state of the servicedir
service directory and monitor its
state changes. 
-  It spawns prog... as a child right after getting the
initial state of the service. 
-  It then blocks until the wanted state happens. 
 Exit codes 
 -  0: success, the wanted state has been reached 
-  1: the service was supposed to go up, but reported permanent failure 
-  99: timed out 
-  100: wrong usage 
-  102: the s6-supervise process monitoring the service died 
-  111: system call failed 
 Options 
 -  -u : up. s6-svlisten1 will wait until the service is up, as
reported by s6-supervise.
This is the default; it is not reliable, but it does not depend on specific
support in the service programs. See this page
for details. 
-  -U : really up. s6-svlisten1 will wait until the service is
up and ready as reported by the daemon itself. This requires
specific support in the service programs, and the use of the
notification-fd file in the
service directory.
See the explanation on this page. 
-  -d : down. s6-svlisten1 will wait until the service is down. 
-  -D : really down. s6-svlisten1 will wait until the
service is down and the cleanup script in servicedir/finish
has finished executing (or has timed out and been killed). 
-  -r : restart. s6-svlisten1 will wait until
the service has been started or restarted, i.e. they have been in the
down state, then the up state. 
-  -R : restart and ready. s6-svlisten1 will wait until
the service has been started or restarted and has notified
readiness. 
-  -t timeout : if the requested event has not
happened after timeout milliseconds, s6-svlisten1 will print a message
to stderr and exit 99. By default, timeout is 0, which means no time
limit. 
 Notes 
 -  s6-svlisten1 is the service-specific version of
s6-ftrig-listen1. The point of s6-svlisten1
is to use it to spawn a program such as s6-svc,
in order to send signals to a service while making sure to catch its
state changes - thus avoiding the race condition that occurs when running
s6-svc then s6-svwait
sequentially. 
-  The s6-svlisten program is an extension
of s6-svlisten1. It can watch the state of several services at once; however,
its syntax makes it best used in execline
scripts only.