summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--COPYING2
-rw-r--r--NEWS3
-rw-r--r--doc/index.html2
-rw-r--r--doc/instances.html26
-rw-r--r--doc/s6-instance-control.html1
-rw-r--r--doc/s6-instance-list.html60
-rw-r--r--doc/s6-instance-status.html64
-rw-r--r--doc/upgrade.html1
8 files changed, 146 insertions, 13 deletions
diff --git a/COPYING b/COPYING
index 0dfd4b1..08c9298 100644
--- a/COPYING
+++ b/COPYING
@@ -1,4 +1,4 @@
-Copyright (c) 2011-2022 Laurent Bercot <ska-skaware@skarnet.org>
+Copyright (c) 2011-2023 Laurent Bercot <ska-skaware@skarnet.org>
Permission to use, copy, modify, and distribute this software for any
purpose with or without fee is hereby granted, provided that the above
diff --git a/NEWS b/NEWS
index fe1418e..b6f8b5b 100644
--- a/NEWS
+++ b/NEWS
@@ -9,6 +9,9 @@ In 2.11.2.0
as the third argument to ./finish.
- The 1-second service restart delay can now only be skipped when
the service is ready.
+ - Implementation of instances! New programs: s6-instance-maker,
+s6-instance-create, s6-instance-delete, s6-instance-control,
+s6-instance-status, s6-instance-list.
In 2.11.1.2
diff --git a/doc/index.html b/doc/index.html
index 8b87d71..e41fa67 100644
--- a/doc/index.html
+++ b/doc/index.html
@@ -279,6 +279,8 @@ synchronization</a>.
<li><a href="s6-instance-create.html">The <tt>s6-instance-create</tt> program</a></li>
<li><a href="s6-instance-delete.html">The <tt>s6-instance-delete</tt> program</a></li>
<li><a href="s6-instance-control.html">The <tt>s6-instance-control</tt> program</a></li>
+<li><a href="s6-instance-status.html">The <tt>s6-instance-status</tt> program</a></li>
+<li><a href="s6-instance-list.html">The <tt>s6-instance-list</tt> program</a></li>
</ul>
<h4> Timed lock acquisition </h4>
diff --git a/doc/instances.html b/doc/instances.html
index 78b3cd5..8f49923 100644
--- a/doc/instances.html
+++ b/doc/instances.html
@@ -65,18 +65,16 @@ supervision tree - the instanced service is an
instances. </li>
<li> Create and delete instances at will with the
<a href="s6-instance-create.html">s6-instance-create</a> and
-<a href="s6-instance-delete.html">s6-instance-delete</a> programs. Instances
-are regular supervised processes; you can control them with
-<a href="s6-instance-control.html">s6-instance-control</a>. These tools are
-<em>online</em>: they work with live service directories (i.e. that are
-being supervised by <a href="s6-supervise.html">s6-supervise</a>). They
-are really syntactic sugar around the
-<a href="s6-svlink.html">s6-svlink</a>,
-<a href="s6-svunlink.html">s6-svunlink</a> and
-<a href="s6-svc.html">s6-svc</a> programs; they provide you with the
-same functionality but allow you to address individual instances via the
-instanced service name (the service directory running the nested
-supervision tree) and the instance name. </li>
+<a href="s6-instance-delete.html">s6-instance-delete</a> programs; you
+can list all the available instances with
+<a href="s6-instance-list.html">s6-instance-list</a>.
+ These tools are <em>online</em>: they work with live service directories,
+i.e. that are being supervised by <a href="s6-supervise.html">s6-supervise</a>.
+ <li> Instances are regular supervised processes. You can control individual
+instances with <a href="s6-instance-control.html">s6-instance-control</a>,
+and check their status with
+<a href="s6-instance-status.html">s6-instance-status</a>. These tools
+are online as well. </li>
</ul>
<h2> Internal workings </h2>
@@ -101,6 +99,10 @@ process running on <tt>instance/<em>name</em></tt>, and the instance may be up
or not depending on the given options. </li>
<li> <a href="s6-instance-control.html">s6-instance-control</a> is syntactic sugar
around <a href="s6-svc.html">s6-svc</a> on <tt>instance/<em>name</em></tt>. </li>
+ <li> <a href="s6-instance-status.html">s6-instance-status</a> is syntactic sugar
+around <a href="s6-svstat.html">s6-svstat</a> on <tt>instance/<em>name</em></tt>. </li>
+ <li> <a href="s6-instance-list.html">s6-instance-list</a> is roughly equivalent
+to <code>ls -1 instance </code>. </li>
<li> <a href="s6-instance-delete.html">s6-instance-delete</a> is syntactic sugar
around <a href="s6-svunlink.html">s6-svunlink</a> on <tt>instance/<em>name</em></tt>. </li>
</ul>
diff --git a/doc/s6-instance-control.html b/doc/s6-instance-control.html
index b52819a..b58fb18 100644
--- a/doc/s6-instance-control.html
+++ b/doc/s6-instance-control.html
@@ -54,6 +54,7 @@ the <em>name</em> instance. </li>
understood by <a href="s6-svc.html">s6-svc</a>.
</p>
+<p>
In fact, s6-instance-control is
nothing more than a call to <a href="s6-svc.html">s6-svc</a> on the service
directory representing the <em>name</em> instance. It is syntactic sugar so
diff --git a/doc/s6-instance-list.html b/doc/s6-instance-list.html
new file mode 100644
index 0000000..69cb342
--- /dev/null
+++ b/doc/s6-instance-list.html
@@ -0,0 +1,60 @@
+<html>
+ <head>
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <meta http-equiv="Content-Language" content="en" />
+ <title>s6: the s6-instance-list program</title>
+ <meta name="Description" content="s6: the s6-instance-list program" />
+ <meta name="Keywords" content="s6 command s6-instance-list instance dynamic instantiation instanced services list listing" />
+ <!-- <link rel="stylesheet" type="text/css" href="//skarnet.org/default.css" /> -->
+ </head>
+<body>
+
+<p>
+<a href="index.html">s6</a><br />
+<a href="//skarnet.org/software/">Software</a><br />
+<a href="//skarnet.org/">skarnet.org</a>
+</p>
+
+<h1> The s6-instance-list program </h1>
+
+<p>
+s6-instance-list gives a list of all currently created instances of an
+<a href="instances.html">instanced service</a>.
+</p>
+
+<h2> Interface </h2>
+
+<pre>
+ s6-instance-list <em>servicedir</em>
+</pre>
+
+<ul>
+ <li> s6-instance-list expects a running, supervised
+<a href="instances.html">instanced service</a> in <em>servicedir</em>,
+as well as an existing instance of this service named <em>name</em>. </li>
+ <li> It prints to stdout, one per line, the names of all existing instances of <em>servicedir</em>, i.e.
+the ones that have been created and not deleted. It does not matter if the instances are
+up or down; if they've been created and not deleted, they're printed. </li>
+ <li> It exits 0. </li>
+</ul>
+
+<h2> Exit codes </h2>
+
+<ul>
+ <li> 0: success </li>
+ <li> 100: wrong usage </li>
+ <li> 111: system call failed </li>
+</ul>
+
+<h2> Notes </h2>
+
+<ul>
+ <li> The list is unsorted, the instance names are printed in an unspecified order. </li>
+ <li> You can use s6-instance-list to script commands that handle sets of instances.
+For instance, to get the status of all the instances of a given service, you could write:
+<code> for i in `s6-instance-list <em>service</em>` ; do printf "%s: " $i ; s6-instance-status <em>service</em> $i ; done </code> </li>
+</ul>
+
+</body>
+</html>
diff --git a/doc/s6-instance-status.html b/doc/s6-instance-status.html
new file mode 100644
index 0000000..4bc6b75
--- /dev/null
+++ b/doc/s6-instance-status.html
@@ -0,0 +1,64 @@
+<html>
+ <head>
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <meta http-equiv="Content-Language" content="en" />
+ <title>s6: the s6-instance-status program</title>
+ <meta name="Description" content="s6: the s6-instance-status program" />
+ <meta name="Keywords" content="s6 command s6-instance-status instance dynamic instantiation instanced services status s6-svstat" />
+ <!-- <link rel="stylesheet" type="text/css" href="//skarnet.org/default.css" /> -->
+ </head>
+<body>
+
+<p>
+<a href="index.html">s6</a><br />
+<a href="//skarnet.org/software/">Software</a><br />
+<a href="//skarnet.org/">skarnet.org</a>
+</p>
+
+<h1> The s6-instance-status program </h1>
+
+<p>
+s6-instance-status gives the status of a running instance of an
+<a href="instances.html">instanced service</a>, as a short human-readable
+summary or programmatically parsable output.
+</p>
+
+<h2> Interface </h2>
+
+<pre>
+ s6-instance-status [ -uwNrpest | -o up,wantedup,normallyup,ready,paused,pid,exitcode,signal,signum,updownsince,readysince,updownfor,readyfor ] [ -n ] <em>servicedir</em> <em>name</em>
+</pre>
+
+<ul>
+ <li> s6-instance-status expects a running, supervised
+<a href="instances.html">instanced service</a> in <em>servicedir</em>,
+as well as an existing instance of this service named <em>name</em>. </li>
+ <li> It prints information to stdout about the monitored instance of <em>servicedir</em> named <em>name</em>. </li>
+ <li> It exits 0. </li>
+</ul>
+
+<h2> Exit codes </h2>
+
+<ul>
+ <li> 0: success </li>
+ <li> 100: wrong usage </li>
+ <li> 111: system call failed </li>
+</ul>
+
+<h2> Options </h2>
+
+<p>
+ The options are exactly the same as the ones understood by <a href="s6-svstat.html">s6-svstat</a>.
+</p>
+
+<p>
+ In fact, s6-instance-status is
+nothing more than a call to <a href="s6-svstat.html">s6-svstat</a> on the service
+directory representing the <em>name</em> instance. It is syntactic sugar so
+the user does not have to depend on the internal representation of instances
+and the location of instances' service directories.
+</p>
+
+</body>
+</html>
diff --git a/doc/upgrade.html b/doc/upgrade.html
index 077b9d8..7afba07 100644
--- a/doc/upgrade.html
+++ b/doc/upgrade.html
@@ -27,6 +27,7 @@ dependency bumped to 2.13.0.0. </li>
optional dependency bumped to 0.2.0.2. </li>
<li> <a href="//skarnet.org/software/execline/">execline</a>
recommended dependency bumped to 2.9.1.0. </li>
+ <li> New feature: implementation of <a href="instances.html">instances</a>. </li>
</ul>
<h2> in 2.11.1.2 </h2>