commit 547890cd8dc01d5a4db1b302594fb2a9f1bc2f75
parent d0bba64cc06f3cfa73ad63d943169667eb27a4df
Author: Gerrit Pape <pape@smarden.org>
Date: Sat, 4 Mar 2006 14:14:47 +0000
* doc/faq.html: new.
* doc/benefits.html: use sv program instead of runsvstat, runsvctrl;
minor.
* doc/replaceinit.html, doc/runlevels.html: put getty service directory
into /etc/sv/.
* doc/runscripts.html: use sv program instead of svwaitup.
* etc/*/3, etc/macosx/StartupItems/runit: use sv program instead of
svwaitdown.
* man/runsv.8: use sv program instead of runsvctrl.
* man/sv.8: minor.
* Makefile, package/commands: no longer build/install runsvctrl,
runsvstat, svwaitdown, svwaitup.
* man/runsvctrl.8, man/runsvstat.8, man/svwaitdown.8, man/svwaitup.8:
remove; obsolete.
* doc/index.html: add faq; remove runsvctrl, runsvstat, svwaitdown,
svwaitup.
* sv.c: fix usage output.
Diffstat:
20 files changed, 466 insertions(+), 85 deletions(-)
diff --git a/Makefile b/Makefile
@@ -1,6 +1,6 @@
DESTDIR=
-PACKAGE=runit-1.3.3
+PACKAGE=runit-1.4.0
DIRS=doc man etc package src
MANPAGES=runit.8 runit-init.8 runsvdir.8 runsv.8 sv.8 svwaitdown.8 svwaitup.8 \
utmpset.8 runsvchdir.8 runsvstat.8 runsvctrl.8 svlogd.8 chpst.8
diff --git a/doc/benefits.html b/doc/benefits.html
@@ -17,16 +17,6 @@
<a href="#packaging">Packaging friendly</a><br>
<a href="#smallcode">Small code size</a>
<hr>
-<i>runit</i>'s service supervision concept is heavily based on the
-<a href="http://cr.yp.to/daemontools.html">daemontools</a>' one, and mostly
-compatible with it.
-The benefits described in the
-<a href="http://cr.yp.to/daemontools/faq/create.html#why">
-daemontools faq</a> also apply to <i>runit</i>'s service supervision.
-Many of the benefits described here also apply to the
-<a href="http://cr.yp.to/daemontools.html">daemontools</a> package.
-Some are described in both places.
-<hr>
<a name="supervision"><h3>Service supervision</h3></a>
Each service is associated with a <i>service directory</i>, and each
service daemon runs as a child process of a supervising
@@ -34,23 +24,19 @@ service daemon runs as a child process of a supervising
The <a href="runsv.8.html">runsv</a> program provides a reliable interface
for signalling the service daemon and controlling the service and
supervisor.
-Normally the <a href="runsvctrl.8.html">runsvctrl</a> program is used to
-send commands through this interface.
-The <a href="runsvstat.8.html">runsvstat</a> program can be used to print
-status information about the service.
+Normally the <a href="sv.8.html">sv</a> program is used to send commands
+through this interface, and to query status informations about the service.
<p>
The <a href="runsv.8.html">runsv</a> program supervises the corresponding
service daemon.
By default a service is defined to be up, that means, if the service daemon
dies, it will be restarted.
-Of course you can <a href="runsvctrl.8.html">tell runsv</a> otherwise.
+Of course you can <a href="sv.8.html">tell runsv</a> otherwise.
<p>
-You don't have such a control interface with <i>sysv init</i> for example.
-Using the control interface to send signals to the service daemon saves a
-lot of extra (non trivial) work to reliably find out the daemon's process
-id.
-Also <i>sysv init</i> only supports "respawning" of services
-started from <tt>inittab</tt>.
+This reliable interface to control daemons and supervisors obsolete
+pid-guessing programs, such as <tt>pidof</tt>, <tt>killall</tt>,
+<tt>start-stop-daemon</tt>, which, due to guessing, are prone to failures
+by design.
<hr>
<a name="state"><h3>Clean process state</h3></a>
<i>runit</i> guarantees each service a clean process state, no matter if the
@@ -106,9 +92,7 @@ output to write to the pipe.
Restarting the service does not require restarting the log service, and vice
versa.
A good choice for a log daemon is <i>runit</i>'s service logging daemon
-<a href="svlogd.8.html">svlogd</a>, or
-<a href="http://cr.yp.to/daemontools/multilog.html">multilog</a> from the
-<i>daemontools</i> package.
+<a href="svlogd.8.html">svlogd</a>.
<p>
The service daemon and the log daemon can run with different process states,
and under different user id's.
diff --git a/doc/faq.html b/doc/faq.html
@@ -0,0 +1,387 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<title>runit - Frequently asked questions</title>
+</head>
+<body>
+<a href="http://smarden.org/pape/">G. Pape</a><br>
+<a href="index.html">runit</a><br>
+<hr>
+<h1>runit - Frequently asked questions</h1>
+<hr>
+<a href="#what">
+What's runit, why is it that different
+</a><br>
+<a href="#help">
+I need some help with runit, what should I do
+</a><br>
+<!--
+<a href="#service">
+What is a service, what a service daemon
+</a><br>
+-->
+<a href="#license">
+What's the license, is runit free software
+</a><br>
+<p>
+<a href="#run">
+How do I run a service under runit service supervision
+</a><br>
+<a href="#create">
+How do I create a new service directory
+</a><br>
+<!--
+<a href="#log">
+What is a log service
+</a><br>
+-->
+<a href="#createlog">
+How do I create a new service directory with an appendant log service
+</a><br>
+<a href="#tell">
+How do I tell runit about a new service
+</a><br>
+<a href="#control">
+How do I start, stop, or restart a service
+</a><br>
+<a href="#signal">
+How can I send signals to a service daemon
+</a><br>
+<a href="#status">
+How can I query the status of a service
+</a><br>
+
+<a href="#remove">
+How do I remove a service
+</a><br>
+<p>
+<a href="#depends">
+How do I make a service depend on another service
+</a><br>
+<!--
+<a href="#strongdepends">
+How can I make a service affect a dependant service
+</a><br>
+-->
+<p>
+<a href="#runlevels">
+What about runlevels
+</a><br>
+<a href="#lsb">
+What about LSB init scripts compliance
+</a><br>
+<p>
+<a href="#readonlyfs">
+Does runit work on a read-only filesystem
+</a><br>
+
+<hr>
+<a name="what"><h3>
+What's runit, why is it that different
+</h3></a>
+What is this runit init scheme about?
+Why is it that different from sysvinit and other init schemes?
+<p>
+Answer:
+Please see the <a href="index.html">introduction</a>, and web page about
+runit's <a href="benefits.html">benefits</a>.
+
+<hr>
+<a name="help"><h3>
+I need some help with runit, what should I do
+</h3></a>
+I have a question, runit is doing something wrong, or I'm doing something
+wrong, what should I do?
+<p>
+Answer:
+First see the documentation, especially this list of
+<a href="faq.html">frequently asked questions</a>, and the man pages
+if you have a question about a specific runit program.
+If that still doesn't answer your question, try to search the
+<a href="http://news.gmane.org/gmane.comp.sysutils.supervision.general">
+supervision mailing list archive</a>.
+Finally, if this fails, feel free to post your question to the
+<a href="http://skarnet.org/lists/">supervision mailing list</a>.
+
+<!--
+<hr>
+<a name="service"><h3>
+What is a service, what a service daemon
+</h3></a>
+The runit documentation talks about services and service daemons.
+What actually is a service, and what a service daemon?
+<p>
+Answer:
+-->
+
+<hr>
+<a name="license"><h3>
+What's the license, is runit free software
+</h3></a>
+runit is free software, it's licensed under a three-clause BSD alike
+license.
+See the file <tt>package/COPYING</tt> in the runit tarball.
+
+<hr>
+<a name="run"><h3>
+How do I run a service under runit service supervision
+</h3></a>
+I want a service to be run under runit service supervision, so that it's
+automatically started on system boot, and supervised while system uptime.
+How does that work?
+<p>
+Answer:
+runit doesn't use the usual <tt>/etc/init.d/</tt> init script interface,
+but uses a directory per service.
+To integrate a service into the runit init scheme,
+<a href="#create">create a service directory</a> for the service, and
+<a href="#tell">tell runit</a> about it.
+
+<hr>
+<a name="create"><h3>
+How do I create a new service directory
+</h3></a>
+How do I create a service directory for the use with runit?
+<p>
+Answer:
+Service directories usually are placed into the <tt>/etc/sv/</tt>
+directory.
+Create a new directory for your service in <tt>/etc/sv/</tt>, put a
+<tt>./run</tt> script into it, and make the script executable.
+Note that for the use with runit,
+<a href="#service">service daemons</a> must not put themself into the
+background, but must run in the foreground.
+Here's a simple example for a <tt>getty</tt> service:
+<pre>
+ $ cat /etc/sv/getty-2/run
+ #!/bin/sh
+ exec getty 38400 tty2 linux
+ $
+</pre>
+Note the <tt>exec</tt> in the last line, it tells the shell that
+interprets the script to replace itself with the service daemon
+<tt>getty</tt>; this is necessary to make
+<a href="#control">controlling the service</a> work properly.
+
+<hr>
+<a name="log"><h3>
+What is a log service
+</h3></a>
+Additionally to supervising a service runit can supervise an appendant
+log service.
+What does that mean?
+<p>
+Answer:
+
+
+<hr>
+<a name="createlog"><h3>
+How do I create a new service directory with an appendant log service
+</h3></a>
+How do I create a service directory with an appendant log service for the
+use with runit?
+<p>
+Answer:
+First <a href="#create">create the service directory</a> for the service.
+Then create a subdirectory <tt>./log</tt> in the service directory, again
+put a <tt>./run</tt> script into it, and make the script executable.
+The <tt>./run</tt> script must run a service logging daemon, normally
+this is the <a href="svlogd.8.html">svlogd</a> program.
+See the <a href="runsv.8.html">runsv</a> man page for details.
+Here's an example of a <tt>./log/run</tt> script:
+<pre>
+ $ cat /etc/sv/socklog-klog/log/run
+ #!/bin/sh
+ exec chpst -ulog svlogd -tt ./main
+ $
+</pre>
+
+<hr>
+<a name="tell"><h3>
+How do I tell runit about a new service
+</h3></a>
+I created a service directory for a service that should run under runit
+service supervision.
+How do I tell runit about the new service directory, so that it picks
+up and runs the service by default?
+<p>
+Answer:
+Create a symbolic link in <tt>/var/service/</tt> pointing to the service
+directory, runit will pick up the service within the next five seconds,
+and automatically start it on system boot.
+E.g.:
+<pre>
+ # ln -s /etc/sv/getty-2 /var/service/
+</pre>
+
+<hr>
+<a name="control"><h3>
+How do I start, stop, or restart a service
+</h3></a>
+I want to stop a service temporarily, and probably restart is later, or
+I want to have it restarted immediately.
+How can I control a service running under runit service supervision?
+<p>
+Answer:
+Use the <a href="sv.8.html">sv</a> program.
+E.g., to restart the <tt>socklog-unix</tt> service, do:
+<pre>
+ # sv restart socklog-unix
+</pre>
+
+<hr>
+<a name="signal"><h3>
+How can I send signals to a service daemon
+</h3></a>
+I want to send a service daemon the HUP signal, to have it re-read its
+configuration, or I want to send it the INT signal.
+How can a send signals to a service daemon?
+<p>
+Answer:
+Use the <a href="sv.8.html">sv</a> program.
+E.g., to send the <tt>dhcp</tt> service the HUP signal, do:
+<pre>
+ # sv hup dhcp
+</pre>
+
+<hr>
+<a name="status"><h3>
+How can I query the status of a service
+</a></h3>
+I want to now the status of a service, whether it is up and available,
+or down as requested, or so.
+How can I find out this information?
+<p>
+Answer:
+User the <a href="sv.8.html">sv</a> program.
+E.g., to query or check the status of the <tt>socklog-unix</tt> service,
+do:
+<pre>
+ # sv status socklog-unix
+</pre>
+or
+<pre>
+ # sv check socklog-unix
+</pre>
+
+<hr>
+<a name="remove"><h3>
+How do I remove a service
+</h3></a>
+I want to remove a service that currently runs under runit service
+supervision.
+How do I tell runit?
+<p>
+Answer:
+Remove the symbolic link in <tt>/var/service/</tt> pointing to the service
+directory, runit recognizes the removed service within the next five
+seconds, then stops the service, the optional log service, and finally the
+supervisor process.
+E.g.:
+<pre>
+ # rm /var/service/getty-2
+</pre>
+
+<hr>
+<a name="depends"><h3>
+How do I make a service depend on another service
+</a></h3>
+I have a service that needs another service to be available before it can
+start.
+How can I tell runit about this dependency?
+<p>
+Answer:
+Make sure in the <tt>./run</tt> script of the dependant service that the
+service it depends on is available before the service daemon starts.
+The <a href="sv.8.html">sv</a> program can be used for that.
+E.g. the <tt>cron</tt> service wants the <tt>socklog-unix</tt> system
+logging service to be available before starting the <tt>cron</tt> service
+daemon, so no logs get lost:
+<pre>
+ $ cat /etc/sv/cron/run
+ #!/bin/sh
+ sv start socklog-unix || exit 1
+ exec cron -f
+ $
+</pre>
+See also the <a href="dependencies.html">documentation</a>.
+
+<!--
+<hr>
+<a name="strongdepends"><h3>
+How can I make a service affect a dependant service
+</a></h3>
+<a href="#depends">This dependency</a> is not enough.
+I have a service that needs to be stopped or restarted, whenever a service
+it depends on stops or restarts.
+How can I tell runit about that a service affects a dependant service in
+such a way?
+<p>
+Answer:
+First think about whether you really need this, it almost never should be
+necessary.
+If you really need this,
+-->
+
+<hr>
+<a name="runlevels"><h3>
+What about runlevels
+</a></h3>
+Other init schemes support runlevels, what about runit?
+<p>
+Answer:
+runit support runlevels, even more flexible than traditional init schemes.
+See <a href="runlevels.html">the documentation</a>.
+
+<hr>
+<a name="lsb"><h3>
+What about LSB init scripts compliance
+</a></h3>
+I know about the <a href="sv.8.html">sv</a> program to control a service,
+but have applications that rely on the <tt>/etc/init.d/</tt> scripts
+interface as defined in the LSB.
+Do I need to change the application to work with runit?
+<p>
+Answer:
+The <a href="sv.8.html">sv</a> program supports the <tt>/etc/init.d/</tt>
+script interface
+<a href="http://refspecs.freestandards.org/LSB_2.1.0/LSB-generic/LSB-generic/iniscrptact.html">
+as defined through LSB</a>.
+To make this script interface work for a service, create a symbolic link
+in <tt>/etc/init.d/</tt>, named as the service daemon, pointing to the
+<a href="sv.8.html">sv</a> program, e.g. for the <tt>cron</tt> service:
+<pre>
+ # ln -s /bin/sv /etc/init.d/cron
+ # /etc/init.d/cron restart
+ ok: run: cron: (pid 5869) 0s
+ #
+</pre>
+
+<hr>
+<a name="readonlyfs"><h3>
+Does runit work on a read-only filesystem
+</a></h3>
+On my system <tt>/etc/</tt> is mounted read-only by default.
+runit uses many files in <tt>/etc/</tt> it need to write to, like
+<tt>/etc/runit/stopit</tt>, and the <tt>./supervise/</tt>
+subdirectories in the service directories.
+How can I make runit work on my system?
+<p>
+Answer:
+Use symbolic links, runit deals with them well, even with dangling
+symlinks.
+E.g., make a ramdisk available at a moint point, say <tt>/var/run/</tt>,
+and create symbolic links for the files and directories that runit needs
+to write access to pointing into <tt>/var/run/</tt>:
+<pre>
+ # ln -s /var/run/runit.stopit /etc/runit/stopit
+ # ln -s /var/run/sv.getty-2 /etc/sv/getty-2/supervise
+</pre>
+
+<hr>
+<address><a href="mailto:pape@smarden.org">
+Gerrit Pape <pape@smarden.org>
+</a></address>
+<small>$Id$</small>
+</body>
+</html>
diff --git a/doc/index.html b/doc/index.html
@@ -18,7 +18,8 @@ release 1.0.x of <i>runit</i>.
<a href="benefits.html">Benefits</a><br>
<a href="replaceinit.html">How to replace init</a><br>
<a href="useinit.html">How to use runit with current init</a><br>
-<a href="usedietlibc.html">How to use dietlibc</a>
+<a href="usedietlibc.html">How to use dietlibc</a><br>
+<a href="faq.html">Frequently asked questions</a><br>
<p>
<a href="runlevels.html">Runlevels</a><br>
<a href="dependencies.html">Service dependencies</a><br>
@@ -27,19 +28,14 @@ release 1.0.x of <i>runit</i>.
<a href="runit.8.html">The <tt>runit</tt> program</a><br>
<a href="runit-init.8.html">The <tt>runit-init</tt> program</a><br>
<br>
+<a href="sv.8.html">The <tt>sv</tt> program</a><br>
+<br>
<a href="runsvdir.8.html">The <tt>runsvdir</tt> program</a><br>
<a href="runsvchdir.8.html">The <tt>runsvchdir</tt> program</a><br>
<a href="runsv.8.html">The <tt>runsv</tt> program</a><br>
-<a href="runsvstat.8.html">The <tt>runsvstat</tt> program</a><br>
-<a href="runsvctrl.8.html">The <tt>runsvctrl</tt> program</a><br>
-<br>
-<a href="sv.8.html">The <tt>sv</tt> program</a><br>
<br>
<a href="svlogd.8.html">The <tt>svlogd</tt> program</a><br>
<br>
-<a href="svwaitdown.8.html">The <tt>svwaitdown</tt> program</a><br>
-<a href="svwaitup.8.html">The <tt>svwaitup</tt> program</a><br>
-<br>
<a href="chpst.8.html">The <tt>chpst</tt> program</a><br>
<a href="utmpset.8.html">The <tt>utmpset</tt> program</a><br>
<hr>
diff --git a/doc/install.html b/doc/install.html
@@ -17,14 +17,14 @@ If you don't have a <tt>/package</tt> directory, create it now:
# chmod 1755 /package
</pre>
Download
-<a href="runit-1.3.3.tar.gz">runit-1.3.3.tar.gz</a> into <tt>/package</tt>
+<a href="runit-1.4.0.tar.gz">runit-1.4.0.tar.gz</a> into <tt>/package</tt>
and unpack the archive
<pre>
# cd /package
- # gunzip runit-1.3.3.tar
- # tar -xpf runit-1.3.3.tar
- # rm runit-1.3.3.tar
- # cd admin/runit-1.3.3
+ # gunzip runit-1.4.0.tar
+ # tar -xpf runit-1.4.0.tar
+ # rm runit-1.4.0.tar
+ # cd admin/runit-1.4.0
</pre>
On MacOSX, do
<pre>
@@ -43,7 +43,7 @@ hierarchy, do:
</pre>
To report success:
<pre>
- # mail pape-runit-1.3.3@smarden.org <compile/sysdeps
+ # mail pape-runit-1.4.0@smarden.org <compile/sysdeps
</pre>
If you use <i>runit</i> regularly, please
<a href="http://smarden.org/pape/#contribution">contribute</a> to the project.
diff --git a/doc/replaceinit.html b/doc/replaceinit.html
@@ -31,9 +31,9 @@ If you have installed the precompiled Debian package, start at step 3.
</pre>
Create also a getty service directory:
<pre>
- # mkdir -p /etc/runit/getty-5
- # cp -p /package/admin/runit/etc/debian/getty-tty5/run /etc/runit/getty-5/
- # cp -p /package/admin/runit/etc/debian/getty-tty5/finish /etc/runit/getty-5/
+ # mkdir -p /etc/sv/getty-5
+ # cp -p /package/admin/runit/etc/debian/getty-tty5/run /etc/sv/getty-5/
+ # cp -p /package/admin/runit/etc/debian/getty-tty5/finish /etc/sv/getty-5/
</pre>
If you want <i>runit</i> to handle the ctrl-alt-del keyboard request, do:
<pre>
@@ -53,7 +53,7 @@ needed), and tell <a href="runsvdir.8.html">runsvdir</a> about the getty-5
<i>service</i>:
<pre>
# mkdir -p /var/service
- # ln -s /etc/runit/getty-5 /var/service/
+ # ln -s /etc/sv/getty-5 /var/service/
</pre>
Start <i>runit</i>'s stage 2 for testing:
<pre>
@@ -116,7 +116,7 @@ default Unix process no 1 <i>runit</i>.
</pre>
To report success:
<pre>
- # ( uname -a ; cat /etc/runit/[123] ) |mail pape-runit-1.3.3@smarden.org
+ # ( uname -a ; cat /etc/runit/[123] ) |mail pape-runit-1.4.0@smarden.org
</pre>
<hr>
@@ -158,21 +158,21 @@ At least one getty must run in stage 2 so that you are able to login.
To have it run on the virtual console no 5, create the getty-5 service
directory:
<pre>
- # mkdir -p /etc/runit/getty-5
+ # mkdir -p /etc/sv/getty-5
OpenBSD 2.9:
- # cp -p /package/admin/runit/etc/openbsd/getty-ttyC4/run /etc/runit/getty-5/
- # cp -p /package/admin/runit/etc/openbsd/getty-ttyC4/finish /etc/runit/getty-5/
+ # cp -p /package/admin/runit/etc/openbsd/getty-ttyC4/run /etc/sv/getty-5/
+ # cp -p /package/admin/runit/etc/openbsd/getty-ttyC4/finish /etc/sv/getty-5/
FreeBSD 4.4:
- # cp -p /package/admin/runit/etc/freebsd/getty-ttyv4/run /etc/runit/getty-5/
- # cp -p /package/admin/runit/etc/freebsd/getty-ttyv4/finish /etc/runit/getty-5/
+ # cp -p /package/admin/runit/etc/freebsd/getty-ttyv4/run /etc/sv/getty-5/
+ # cp -p /package/admin/runit/etc/freebsd/getty-ttyv4/finish /etc/sv/getty-5/
</pre>
and tell <a href="runsvdir.8.html">runsvdir</a> about the <tt>getty-5</tt>
<i>service</i>:
<pre>
# mkdir -p /var/service
- # ln -s /etc/runit/getty-5 /var/service/
+ # ln -s /etc/sv/getty-5 /var/service/
</pre>
Start <i>runit</i>'s stage 2 for testing:
<pre>
@@ -205,7 +205,7 @@ This will cause <i>runit</i> to enter stage 3 which runs
<p>
To report success:
<pre>
- # ( uname -a ; cat /etc/runit/[123] ) |mail pape-runit-1.3.3@smarden.org
+ # ( uname -a ; cat /etc/runit/[123] ) |mail pape-runit-1.4.0@smarden.org
</pre>
<h3>Step 5: Service migration</h3>
The goal is to migrate all services from <i>/etc/rc.*</i> scheme to the
diff --git a/doc/runlevels.html b/doc/runlevels.html
@@ -22,7 +22,7 @@ Create the following directories and symbolic links:
<pre>
# mkdir -p /etc/runit/runsvdir/default
# mkdir -p /etc/runit/runsvdir/single
- # ln -s /etc/runit/getty-5 /etc/runit/runsvdir/single/getty-5
+ # ln -s /etc/sv/getty-5 /etc/runit/runsvdir/single/
# ln -s default /etc/runit/runsvdir/current
</pre>
Copy the contents of <tt>/var/service/</tt> to
@@ -72,7 +72,7 @@ You can check the status of the <tt>previous</tt> runlevel through
<hr>
<a name="create"><h3>Creating new runlevels</h3></a>
To create a new runlevel, simply create a new directory in
-<tt>/etc/runit/runsvdir</tt>.
+<tt>/etc/runit/runsvdir/</tt>.
The name of the directory is the name of the new runlevel.
The name must not start with a dot and must not be <tt>current</tt>,
<tt>current.new</tt>, or <tt>previous</tt>, e.g.:
@@ -82,9 +82,9 @@ The name must not start with a dot and must not be <tt>current</tt>,
Add the services you want to run in the runlevel <tt>maintenance</tt> to the
newly created directory, e.g.:
<pre>
- # ln -s /etc/runit/getty-5 /etc/runit/runsvdir/maintenance/
- # ln -s /etc/runit/runsv/ssh /etc/runit/runsvdir/maintenance/
- # ln -s /etc/runit/runsv/dnscache /etc/runit/runsvdir/maintenance/
+ # ln -s /etc/sv/getty-5 /etc/runit/runsvdir/maintenance/
+ # ln -s /etc/sv/ssh /etc/runit/runsvdir/maintenance/
+ # ln -s /etc/sv/dnscache /etc/runit/runsvdir/maintenance/
</pre>
If you want to switch to the runlevel <tt>maintenance</tt>, do:
<pre>
diff --git a/doc/runscripts.html b/doc/runscripts.html
@@ -201,7 +201,7 @@ logging console messages</a><br>
test -n "$CFS_MOUNT" || exit 0
test -n "$CFS_UMOUNT" || exit 0
- svwaitup -s 2 /var/service/portmap
+ sv start portmap || exit 1
exec env \
NODAEMON=1 CFS_MOUNT="$CFS_MOUNT" CFS_UMOUNT="$CFS_UMOUNT" $DAEMON
@@ -379,7 +379,7 @@ to be set up.
<pre>
#!/bin/sh
exec 2>&1
- svwaitup -s 2 /var/service/portmap
+ sv start /var/service/portmap || exit 1
exec famd -T 0 -f
</pre>
<hr>
@@ -515,7 +515,7 @@ to be set up.
(<i>Debian sid</i>, <i>FreeBSD 5.3-REL</i>)
<pre>
#!/bin/sh
- svwaitup -s 2 /service/getty-*
+ sv start /service/getty-* || exit 1
exec kdm -nodaemon
</pre>
<hr>
@@ -865,7 +865,7 @@ to be set up.
(<i>Debian</i>)
<pre>
#!/bin/sh
-svwaitup /var/service/statd
+sv start portmap statd || exit 1
RPCNFSDCOUNT=8 # Number of servers to be started up by default
RPCMOUNTDOPTS=
@@ -964,7 +964,7 @@ to be set up.
(<i>Linux</i>)
<pre>
#!/bin/sh
- svwaitup -s 2 /service/vc-*
+ sv start /service/vc-* || exit 1
exec xdm -nodaemon
</pre>
<hr>
diff --git a/etc/debian/3 b/etc/debian/3
@@ -6,11 +6,9 @@ PATH=/command:/sbin:/bin:/usr/sbin:/usr/bin
LAST=0
test -x /etc/runit/reboot && LAST=6
-echo 'Waiting for getties to stop...'
-svwaitdown -xk -t14 /var/service/getty-*
-
echo 'Waiting for services to stop...'
-svwaitdown -xk -t350 /var/service/*
+sv -w196 force-stop /var/service/*
+sv exit /var/service/*
echo 'Shutdown...'
/etc/init.d/rc $LAST
diff --git a/etc/freebsd/3 b/etc/freebsd/3
@@ -4,7 +4,8 @@ exec 2>&1
PATH=/command:/sbin:/bin:/usr/sbin:/usr/bin
echo 'Waiting for services to stop...'
-svwaitdown -xk -t350 /var/service/*
+sv -w196 force-stop /var/service/*
+sv exit /var/service/*
echo 'Shutdown...'
if test -x /etc/runit/reboot; then
diff --git a/etc/macosx/StartupItems/runit b/etc/macosx/StartupItems/runit
@@ -12,7 +12,8 @@ StartService() {
}
StopService() {
ConsoleMessage "Stopping runit service supervision"
- svwaitdown -xk -t14 /var/service/*
+ sv -w196 force-stop /var/service/*
+ sv exit /var/service/*
}
RestartService() {
return 0
diff --git a/etc/openbsd/3 b/etc/openbsd/3
@@ -3,11 +3,9 @@ exec 2>&1
PATH=/command:/sbin:/bin:/usr/sbin:/usr/bin
-echo 'Waiting for getties to stop...'
-svwaitdown -xk -t14 /var/service/getty-*
-
echo 'Waiting for services to stop...'
-svwaitdown -xk -t350 /var/service/*
+sv -w196 force-stop /var/service/*
+sv exit /var/service/*
echo 'Shutdown...'
if test -x /etc/runit/reboot; then
diff --git a/man/runsv.8 b/man/runsv.8
@@ -69,7 +69,7 @@ and (optionally)
are provided to give commands to
.BR runsv .
You can use
-.BR runsvctrl (8)
+.BR sv (8)
to control the service or just write one of the following characters to
the named pipe:
.TP
@@ -146,7 +146,7 @@ This command is ignored if it is given to
.IR service /log/supervise/control.
.P
Example: to send a TERM signal to the socklog-unix service, either do
- # runsvctrl term /var/service/socklog-unix
+ # sv term /var/service/socklog-unix
or
# echo \-n t >/var/service/socklog-unix/supervise/control
.P
diff --git a/man/sv.8 b/man/sv.8
@@ -85,7 +85,7 @@ This command is ignored if it is given to an appendant log service.
.BR sv
actually looks only at the first character of these
.IR command s.
-.SH Commands compatible to LSB init script actions
+.SS Commands compatible to LSB init script actions
.TP
.B status
Same as
@@ -182,7 +182,7 @@ process to terminate.
Then report the status, and on timeout send the service the
.I kill
command.
-.SH Additional Commands
+.SS Additional Commands
.TP
.B check
Check for the service to be in the state that's been requested.
diff --git a/package/CHANGES b/package/CHANGES
@@ -1,3 +1,23 @@
+runit 1.4.0
+Sat, 04 Mar 2006 14:13:49 +0000
+ * doc/faq.html: new.
+ * doc/benefits.html: use sv program instead of runsvstat, runsvctrl;
+ minor.
+ * doc/replaceinit.html, doc/runlevels.html: put getty service directory
+ into /etc/sv/.
+ * doc/runscripts.html: use sv program instead of svwaitup.
+ * etc/*/3, etc/macosx/StartupItems/runit: use sv program instead of
+ svwaitdown.
+ * man/runsv.8: use sv program instead of runsvctrl.
+ * man/sv.8: minor.
+ * Makefile, package/commands: no longer build/install runsvctrl,
+ runsvstat, svwaitdown, svwaitup.
+ * man/runsvctrl.8, man/runsvstat.8, man/svwaitdown.8, man/svwaitup.8:
+ remove; obsolete.
+ * doc/index.html: add faq; remove runsvctrl, runsvstat, svwaitdown,
+ svwaitup.
+ * sv.c: fix usage output.
+
runit 1.3.3
Mon, 02 Jan 2006 20:35:34 +0000
* chpst.c: adjust nice value and set limits before dropping permissions.
diff --git a/package/commands b/package/commands
@@ -3,11 +3,7 @@ runit
runit-init
runsv
runsvchdir
-runsvctrl
runsvdir
-runsvstat
sv
svlogd
-svwaitdown
-svwaitup
utmpset
diff --git a/package/upgrade b/package/upgrade
@@ -8,9 +8,9 @@ test -d src || sh -cx '! : Wrong working directory.'
here=`env - PATH=$PATH pwd`
parent=`dirname $here`
-echo 'Creating symlink runit -> runit-1.3.3...'
+echo 'Creating symlink runit -> runit-1.4.0...'
rm -f runit
-ln -s runit-1.3.3 runit
+ln -s runit-1.4.0 runit
mv -f runit ..
echo 'Making command links in /command...'
diff --git a/package/versions b/package/versions
@@ -38,3 +38,4 @@
1.3.1
1.3.2
1.3.3
+1.4.0
diff --git a/src/Makefile b/src/Makefile
@@ -1,5 +1,4 @@
-IT=chpst runit runit-init runsv runsvchdir runsvctrl runsvdir runsvstat sv \
- svlogd svwaitdown svwaitup utmpset
+IT=chpst runit runit-init runsv runsvchdir runsvdir sv svlogd utmpset
default: sysdeps $(IT)
diff --git a/src/sv.c b/src/sv.c
@@ -14,8 +14,8 @@
#include "taia.h"
#include "wait.h"
-#define USAGE " [-v] [-w sec] action service ..."
-#define USAGELSB " [-w sec] action"
+#define USAGE " [-v] [-w sec] command service ..."
+#define USAGELSB " [-w sec] command"
#define VERSION "$Id$"