From 83853a80eb18238796154164f9ea776b0c167ab7 Mon Sep 17 00:00:00 2001
From: Laurent Bercot
Date: Fri, 16 Jan 2015 01:36:48 +0000
Subject: - s6-svlisten and s6-svlisten1 - Synchronous s6-svc - version
2.0.2.0, rc
---
doc/index.html | 2 +
doc/s6-svc.html | 37 +++++++--
doc/s6-svlisten.html | 100 ++++++++++++++++++++++
doc/s6-svlisten1.html | 81 ++++++++++++++++++
package/deps.mak | 8 +-
package/modes | 2 +
package/targets.mak | 2 +
src/libs6/s6_svc_main.c | 1 -
src/pipe-tools/s6-ftrig-listen.c | 4 +-
src/supervision/deps-exe/s6-svlisten | 5 ++
src/supervision/deps-exe/s6-svlisten1 | 4 +
src/supervision/s6-svc.c | 91 +++++++++++++++++++-
src/supervision/s6-svlisten.c | 152 ++++++++++++++++++++++++++++++++++
src/supervision/s6-svlisten1.c | 121 +++++++++++++++++++++++++++
src/supervision/s6-svwait.c | 14 ++--
15 files changed, 601 insertions(+), 23 deletions(-)
create mode 100644 doc/s6-svlisten.html
create mode 100644 doc/s6-svlisten1.html
create mode 100644 src/supervision/deps-exe/s6-svlisten
create mode 100644 src/supervision/deps-exe/s6-svlisten1
create mode 100644 src/supervision/s6-svlisten.c
create mode 100644 src/supervision/s6-svlisten1.c
diff --git a/doc/index.html b/doc/index.html
index 9e3dde3..5423e12 100644
--- a/doc/index.html
+++ b/doc/index.html
@@ -115,6 +115,8 @@ a user interface to control those processes and monitor service states.
The s6-svok program
The s6-svstat program
The s6-svwait program
+The s6-svlisten1 program
+The s6-svlisten program
The s6-notifywhenup program
diff --git a/doc/s6-svc.html b/doc/s6-svc.html
index 606cc16..0ca3bd7 100644
--- a/doc/s6-svc.html
+++ b/doc/s6-svc.html
@@ -27,7 +27,7 @@ knowing their PIDs, and without using horrible hacks such as .pid files.
Interface
- s6-svc [ -abqhkti12fFpcoduxO ] servicedir
+ s6-svc [ -D | -U ] [ -t timeout ] [ -abqhkti12pcoduxO ] servicedir
@@ -62,7 +62,17 @@ normally never be used on a working system.
-O : Once at most. Do not restart the supervised process
when it dies. If it is down when the command is received, do not even start
it.
- -f, -F : unused for now.
+ -t timeout : if the -D or
+-U option has been given, -t specifies a timeout
+(in milliseconds) after which s6-svc will exit 1 with an error message if
+the service still hasn't reached the desired state. By default, the
+timeout is 0, which means that s6-svc will block indefinitely.
+ -D : s6-svc will not exit until the service is down.
+ -U : s6-svc will not exit until the service is up and
+ready as notified by the daemon itself.
+Be careful to only use this command on services that send readiness
+notifications and are managed by s6-notifywhenup,
+else the command will never be successful.
Usage examples
@@ -81,9 +91,15 @@ the process represented by the /service/sshd service directory -
typically the sshd server.
- s6-svc -d /service/ftpd
+ s6-svc -Dd /service/ftpd
- Take down the ftpd server.
+ Take down the ftpd server and block until the process is really down.
+
+
+ s6-svc -Uu -t 5000 /service/ftpd
+
+ Bring up the ftpd server and block until it has sent notification that it
+is ready. Exit 1 if it is still not ready after 5 seconds.
s6-svc -a /service/httpd/log
@@ -94,11 +110,16 @@ process is s6-log, this triggers a log rotation.
Internals
-
-s6-svc writes control commands into the servicedir/supervise/control
+
+ - s6-svc writes control commands into the servicedir/supervise/control
FIFO. A s6-supervise process running on servicedir will be listening to this FIFO,
-and will read and interpret those commands.
-
+and will read and interpret those commands.
+ - When invoked with the -D or -U option, s6-svc executes into
+s6-svlisten1, which will listen to service state
+changes and spawn another s6-svc instance (without the -D or -U
+option) that will send the commands to the service. Any error message written during
+the waiting period will mention it is being written by s6-svlisten1; this is normal.
+