261 lines
11 KiB
HTML
261 lines
11 KiB
HTML
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
|
|
<html>
|
|
<head>
|
|
<title>runit - a UNIX init scheme with service supervision</title>
|
|
</head>
|
|
<body>
|
|
<a href="http://smarden.org/pape/">G. Pape</a>
|
|
<hr>
|
|
<h1>runit - a UNIX init scheme with service supervision</h1>
|
|
<hr>
|
|
<a href="install.html">How to install runit</a><br>
|
|
<a href="upgrade.html">Upgrading from previous versions of runit</a>
|
|
<p>
|
|
<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><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>
|
|
<a href="runscripts.html">A collection of run scripts</a><br>
|
|
<p>
|
|
<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>
|
|
<br>
|
|
<a href="svlogd.8.html">The <tt>svlogd</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>
|
|
<i>runit</i> is a
|
|
cross-platform Unix init scheme with service supervision, a replacement for
|
|
<a href="ftp://ftp.cistron.nl/pub/people/miquels/sysvinit/">sysvinit</a>,
|
|
and other init schemes.
|
|
It runs on <b>GNU/Linux</b>, <b>*BSD</b>, <b>MacOSX</b>, <b>Solaris</b>,
|
|
and can easily be adapted to other Unix operating systems.
|
|
If <i>runit</i> runs for you on any other operating system, please
|
|
<a href="mailto:supervision@list.skarnet.org">let me know</a>.
|
|
<hr>
|
|
<i>runit</i> is discussed on the
|
|
<a href="http://skarnet.org/lists/#supervision">
|
|
<supervision@list.skarnet.org></a>
|
|
mailing list.
|
|
Please contact this list and not me privately.
|
|
<p>
|
|
To subscribe send an empty email to
|
|
<a href="mailto:supervision-subscribe@list.skarnet.org">
|
|
<supervision-subscribe@list.skarnet.org></a>.
|
|
<p>
|
|
Mailing list archives are available at
|
|
<a href="http://skarnet.org/lists/archive.cgi?2">skarnet.org</a>, and
|
|
<a href="http://news.gmane.org/gmane.comp.sysutils.supervision.general">
|
|
gmane.org</a>.
|
|
<hr>
|
|
The program <a href="runit.8.html">runit</a> is intended to run as Unix
|
|
process no 1, it is automatically started by the
|
|
<a href="runit-init.8.html">runit-init</a> <tt>/sbin/init</tt>-replacement
|
|
if this is started by the kernel.
|
|
<p>
|
|
<a href="runit.8.html">runit</a> performs the system's <i>booting</i>,
|
|
<i>running</i> and <i>shutting down</i> in <b>three stages</b>:
|
|
<ul>
|
|
<li><b>Stage 1:</b><br>
|
|
<i>runit</i> starts <tt>/etc/runit/1</tt> and waits for it to
|
|
terminate.
|
|
The system's one time initialization tasks are done here.
|
|
<tt>/etc/runit/1</tt> has full control over <tt>/dev/console</tt> to be
|
|
able to start an emergency shell in case the one time initialization
|
|
tasks fail.
|
|
<li><b>Stage 2:</b><br>
|
|
<i>runit</i> starts <tt>/etc/runit/2</tt> which should not return
|
|
until the system is going to halt or reboot; if it crashes, it will be
|
|
restarted.
|
|
Normally, <tt>/etc/runit/2</tt> runs
|
|
<a href="runsvdir.8.html">runsvdir</a>.
|
|
In Stage 2 <i>runit</i> optionally handles the INT signal (ctrl-alt-del
|
|
keyboard request on Linux/i386).
|
|
<li><b>Stage 3:</b><br>
|
|
If <i>runit</i> is told to halt or reboot the system, or Stage 2 returns
|
|
without errors, it terminates Stage 2 if it is running, and runs
|
|
<tt>/etc/runit/3</tt>.
|
|
The systems tasks to shutdown and halt or reboot are done here.
|
|
</ul>
|
|
These are working examples for Debian sarge:
|
|
<a href="debian/1">/etc/runit/1</a>,
|
|
<a href="debian/2">/etc/runit/2</a>,
|
|
<a href="debian/3">/etc/runit/3</a>.
|
|
<p>
|
|
The program <a href="runit-init.8.html">runit-init</a> is intended to
|
|
replace <tt>/sbin/init</tt>.
|
|
The command <b><tt>init 0</tt></b> tells <i>runit</i> to halt the system,
|
|
and <b><tt>init 6</tt></b> to reboot.
|
|
<a href="runlevels.html">Runlevels</a> are handled through the
|
|
<a href="runsvdir.8.html">runsvdir</a> and
|
|
<a href="runsvchdir.8.html">runsvchdir</a> programs.
|
|
Service <a href="dependencies.html">dependencies</a> are resolved
|
|
automatically.
|
|
<p>
|
|
<i>runit</i> is optimized for reliability and small size.
|
|
The amount of code in process no 1 should be minimal.
|
|
<hr>
|
|
See <a href="install.html">How to install runit</a> for installing
|
|
<i>runit</i>, and <a href="replaceinit.html">How to replace init</a> for
|
|
configuring <i>runit</i> to run as process no 1.
|
|
See <a href="useinit.html">How to use with current init</a> if you want to
|
|
use <i>runit</i> without replacing the current init scheme.
|
|
Please read the list of
|
|
<a href="faq.html">Frequently asked questions with answers</a>.
|
|
<hr>
|
|
If <i>runit</i> on Linux is compiled and linked with the
|
|
<a href="http://www.fefe.de/dietlibc/">dietlibc</a>, it yields in a
|
|
statically linked <tt>runit</tt> binary of 8.5k size and this
|
|
<tt>ps axuw</tt> output on my system:
|
|
<pre>
|
|
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
|
|
root 1 0.0 0.0 20 16 ? S 2002 0:02 runit
|
|
</pre>
|
|
I recommend doing this; for instructions, see
|
|
<a href="usedietlibc.html">How to use dietlibc</a>.
|
|
<hr>
|
|
The following distributions are known to include or package <i>runit</i>:
|
|
<ul>
|
|
<li><a href="http://packages.qa.debian.org/runit">
|
|
Debian GNU/Linux</a> (as alternative init scheme)
|
|
<li><a href="http://www.freshports.org/sysutils/runit/">
|
|
FreeBSD</a>
|
|
<li><a href="http://www.openbsd.org/cgi-bin/cvsweb/ports/sysutils/runit/">
|
|
OpenBSD</a>
|
|
<li><a href="http://pkgsrc.se/wip/runit/">
|
|
NetBSD</a>
|
|
<li><a href="http://packages.ubuntu.com/runit">
|
|
Ubuntu</a> (as alternative init scheme)
|
|
<li><a href="http://packages.gentoo.org/package/sys-process/runit">
|
|
Gentoo</a>
|
|
<li><a href="https://code.google.com/p/runit-for-lfs/">
|
|
Linux from Scratch</a>
|
|
<li><a href="http://www.finnix.org/">
|
|
Finnix</a>
|
|
<li><a href="http://www.smeserver.org/">
|
|
SME server</a>
|
|
<li><a href="http://linux-vserver.org/Running_runit-supervised_services_inside_a_vserver">
|
|
Linux-VServer</a>
|
|
<li><a href="http://www.t2-project.org/">
|
|
T2</a>
|
|
<li><a href="http://www.gobolinux.org/">
|
|
GoboLinux</a>
|
|
<li><a href="http://www.dragora.org/">
|
|
Dragora GNU/Linux</a> (as default init scheme)
|
|
<li><a href="https://wiki.archlinux.org/index.php/Runit">
|
|
ArchLinux</a>
|
|
<li><a href="http://www.opensde.org/">
|
|
OpenSDE</a>
|
|
<li><a href="http://zinux.cynicbytrade.com/">
|
|
Zinux Linux</a> (as default init scheme)
|
|
<li><a href="http://deepofix.org/">
|
|
deepOfix Mail Server</a> (as default init scheme)
|
|
</ul>
|
|
If you know of more distributions, please
|
|
<a href="mailto:supervision@list.skarnet.org">let me know</a>.
|
|
<hr>
|
|
<b><i>runit</i> in use</b>:
|
|
I replaced <i>sysvinit</i> successfully with <i>runit</i> on several server
|
|
systems and a laptop running Debian/GNU Linux sarge, woody, and potato.
|
|
Here is an example:
|
|
<pre>
|
|
# strings /proc/1/exe |grep Id
|
|
$Id: runit.c,v 1.7 2002/02/13 09:59:52 pape Exp $
|
|
# uptime
|
|
11:59:13 up 365 days, 23:22, 3 users, load average: 0.01, 0.02, 0.00
|
|
# ps axuw |head -n20
|
|
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
|
|
root 1 0.0 0.0 20 16 ? S 2002 0:07 runit
|
|
root 2 0.0 0.0 0 0 ? SW 2002 0:00 [keventd]
|
|
root 3 0.0 0.0 0 0 ? SWN 2002 0:51 [ksoftirqd_CPU0]
|
|
root 4 0.0 0.0 0 0 ? SW 2002 144:38 [kswapd]
|
|
root 5 0.0 0.0 0 0 ? SW 2002 0:08 [bdflush]
|
|
root 6 0.0 0.0 0 0 ? SW 2002 7:24 [kupdated]
|
|
root 168 0.0 0.0 1652 168 ? S 2002 0:27 /usr/sbin/cron
|
|
root 174 0.0 0.0 36 24 ? S 2002 1:06 runsvdir /var/service log: ...............................................................................................
|
|
root 176 0.0 0.0 20 20 ? S 2002 0:00 runsv qmail-send
|
|
root 177 0.0 0.0 20 20 ? S 2002 0:00 runsv getty-5
|
|
root 178 0.0 0.0 20 20 ? S 2002 0:00 runsv getty-4
|
|
root 179 0.0 0.0 20 20 ? S 2002 0:00 runsv getty-3
|
|
root 180 0.0 0.0 20 20 ? S 2002 0:00 runsv getty-2
|
|
root 182 0.0 0.0 20 20 ? S 2002 0:00 runsv socklog-unix
|
|
root 183 0.0 0.0 1256 4 tty5 S 2002 0:00 /sbin/getty 38400 tty5 linux
|
|
root 184 0.0 0.0 1256 4 tty3 S 2002 0:00 getty 38400 tty3 linux
|
|
root 185 0.0 0.0 20 20 ? S 2002 0:00 runsv socklog-klog
|
|
root 186 0.0 0.0 20 20 ? S 2002 0:00 runsv ssh
|
|
root 187 0.0 0.0 1256 4 tty4 S 2002 0:00 getty 38400 tty4 linux
|
|
# pstree
|
|
runit-+-bdflush
|
|
|-cron
|
|
|-gcache
|
|
|-keventd
|
|
|-ksoftirqd_CPU0
|
|
|-kswapd
|
|
|-kupdated
|
|
`-runsvdir-+-runsv-+-multilog
|
|
| `-qmail-send-+-qmail-clean
|
|
| |-qmail-lspawn
|
|
| `-qmail-rspawn---qmail-remote
|
|
|-4*[runsv---getty]
|
|
|-2*[runsv-+-multilog]
|
|
| `-socklog]
|
|
|-runsv-+-multilog
|
|
| `-sshd-+-sshd---sshd---bash---bash---pstree
|
|
| `-sshd---sshd---rsync
|
|
|-runsv---clockspeed
|
|
|-runsv-+-dnscache
|
|
| `-multilog
|
|
|-runsv---apache-ssl-+-9*[apache-ssl]
|
|
| |-gcache
|
|
| `-4*[multilog]
|
|
|-7*[runsv-+-multilog]
|
|
| `-tcpserver]
|
|
|-4*[runsv-+-multilog]
|
|
| `-tinydns]
|
|
|-runsv---uncat
|
|
|-2*[runsv-+-multilog]
|
|
| `-tcpsvd]
|
|
|-runsv-+-svlogd
|
|
| `-tcpsvd-+-smtpfront-qmail
|
|
| `-smtpfront-qmail---qmail-queue
|
|
`-runsv-+-svlogd
|
|
`-tcpsvd---bincimap-up---bincimapd
|
|
</pre>
|
|
<hr>
|
|
See <a href="http://smarden.org/runit/">http://smarden.org/runit/</a>
|
|
for recent informations.
|
|
<hr>
|
|
Related links:
|
|
<ul>
|
|
<li><a href="http://www.fefe.de/minit/">
|
|
minit</a> - a small yet feature-complete init
|
|
<li><a href="http://multivac.cwru.edu/svscan-1/">
|
|
svscan as process 1</a> - by Paul Jarc
|
|
<li><a href="ftp://ftp.cistron.nl/pub/people/miquels/sysvinit/">
|
|
sysvinit</a> - source code
|
|
<li><a href="http://www.freebsd.org/cgi/cvsweb.cgi/src/sbin/init/">
|
|
FreeBSD's init</a> - CVS repository
|
|
<li><a href="http://cvsweb.netbsd.org/bsdweb.cgi/src/sbin/init/">
|
|
NetBSD's init</a> - CVS repository
|
|
<li><a href="http://www.openbsd.org/cgi-bin/cvsweb/src/sbin/init/">
|
|
OpenBSD's init</a> - CVS repository
|
|
<li><a href="http://www.atnf.csiro.au/~rgooch/linux/boot-scripts/">
|
|
Linux Boot Scripts</a> - by Richard Gooch
|
|
</ul>
|
|
<hr>
|
|
<address><a href="mailto:pape@smarden.org">
|
|
Gerrit Pape <pape@smarden.org>
|
|
</a></address>
|
|
</body>
|
|
</html>
|