summary refs log tree commit diff
path: root/doc/faq.html
diff options
context:
space:
mode:
authorGerrit Pape <pape@smarden.org>2006-03-04 14:14:47 +0000
committerGerrit Pape <pape@smarden.org>2006-03-04 14:14:47 +0000
commit5cdc37ab3be9ae7fabfa9077e46b36f3eb913c1c (patch)
treee7d456fc5f6bca85749141fd5553f57444be5afd /doc/faq.html
parenta3f1d29c2db2393e2436f1bd928d353f587e2d2a (diff)
downloadrunit-5cdc37ab3be9ae7fabfa9077e46b36f3eb913c1c.tar.gz
runit-5cdc37ab3be9ae7fabfa9077e46b36f3eb913c1c.tar.xz
runit-5cdc37ab3be9ae7fabfa9077e46b36f3eb913c1c.zip
* 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 (limited to 'doc/faq.html')
-rw-r--r--doc/faq.html387
1 files changed, 387 insertions, 0 deletions
diff --git a/doc/faq.html b/doc/faq.html
new file mode 100644
index 0000000..03d175d
--- /dev/null
+++ 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 &lt;pape@smarden.org&gt;
+</a></address>
+<small>$Id$</small>
+</body>
+</html>