runit - a UNIX init scheme with service supervision

Benefits

How to replace init

How to use runit with current init

How to use dietlibc

Frequently asked questions



Runlevels

Service dependencies

A collection of run scripts



The runit program

The runit-init program



The sv program



The runsvdir program

The runsvchdir program

The runsv program



The svlogd program



The chpst program

The utmpset program



To subscribe send an empty email to <supervision-subscribe@list.skarnet.org>.

Mailing list archives are available at skarnet.org, and gmane.org.

/sbin/init

runit performs the system's booting, running and shutting down in three stages:

Stage 1:

runit starts /etc/runit/1 and waits for it to terminate. The system's one time initialization tasks are done here. /etc/runit/1 has full control over /dev/console to be able to start an emergency shell in case the one time initialization tasks fail.

starts and waits for it to terminate. The system's one time initialization tasks are done here. has full control over to be able to start an emergency shell in case the one time initialization tasks fail. Stage 2:

runit starts /etc/runit/2 which should not return until the system is going to halt or reboot; if it crashes, it will be restarted. Normally, /etc/runit/2 runs runsvdir. In Stage 2 runit optionally handles the INT signal (ctrl-alt-del keyboard request on Linux/i386).

starts which should not return until the system is going to halt or reboot; if it crashes, it will be restarted. Normally, runs runsvdir. In Stage 2 optionally handles the INT signal (ctrl-alt-del keyboard request on Linux/i386). Stage 3:

If runit is told to halt or reboot the system, or Stage 2 returns without errors, it terminates Stage 2 if it is running, and runs /etc/runit/3 . The systems tasks to shutdown and halt or reboot are done here.

The program runit-init is intended to replace /sbin/init . The command init 0 tells runit to halt the system, and init 6 to reboot. Runlevels are handled through the runsvdir and runsvchdir programs. Service dependencies are resolved automatically.

runit is optimized for reliability and small size. The amount of code in process no 1 should be minimal.

runit

ps axuw

USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.0 20 16 ? S 2002 0:02 runit

# 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