aboutsummaryrefslogtreecommitdiffstats
s6: the s6-svlisten1 program

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.