A collection of run scripts
Dependencies and runlevels
The runit program
The runit-init program
The svwaitdown program
The svwaitup program
Warning: Replacing sysvinit or init can cause the system's boot to fail. Make sure you are able to recover and repair your system, for example if you run a boot loader, it should be able to pass init=/bin/sh to the kernel.
runit performs the system's booting, running and shutting down in three stages:
The command runit-init is intended to replace /sbin/init. sysvinit's command shutdown will keep working. On *BSD systems use init 0 for system halt and init 6 for reboot. Runlevels are not implemented in this Unix process no 1, such can easily be done in other programs, see Dependencies and runlevels for an example, the amount of code in process no 1 should be minimal.
# strings /proc/1/exe |grep Id $Id: runit.c,v 1.5 2001/12/30 16:28:53 pape Exp $ # uptime 19:44:10 up 139 days, 1:09, 3 users, load average: 0.00, 0.00, 0.00 # ps axuw |head USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.0 24 24 ? S 2001 0:06 runit root 2 0.0 0.0 0 0 ? SW 2001 0:09 [kflushd] root 3 0.0 0.0 0 0 ? SW 2001 0:07 [kupdate] root 4 0.0 0.0 0 0 ? SW 2001 0:35 [kswapd] root 5 0.0 0.0 0 0 ? SW 2001 0:00 [keventd] root 149 0.0 0.1 1692 120 ? S 2001 0:00 /usr/sbin/cron root 152 0.0 0.0 2196 0 ? SW 2001 0:00 [svscanboot] root 154 0.0 0.1 1316 104 ? S 2001 0:00 svscan /service root 155 0.0 0.0 1268 16 ? S 2001 0:00 readproctitle service errors: ................ # pstree runit-+-cron |-keventd |-kflushd |-kswapd |-kupdate `-svscanboot-+-readproctitle `-svscan-+-2*[supervise---socklog] |-18*[supervise---multilog] |-5*[supervise---tcpserver] |-supervise---qmail-send-+-qmail-clean | |-qmail-lspawn | `-qmail-rspawn |-supervise---sshd---sshd---bash---bash---pstree |-supervise---bash |-2*[supervise---getty] |-supervise---uncat |-supervise---dhcpd-2.2.x |-supervise---dnscache |-supervise---tinydns |-supervise---isdnlog |-supervise---sleep |-supervise---klogd |-2*[supervise] |-2*[supervise---vboxgetty] |-supervise---clockspeed |-supervise---squid---unlinkd `-supervise---dhclient-2.2.xThis is from a more busy system:
# strings /proc/1/exe |grep Id $Id: runit.c,v 1.6 2002/01/29 18:56:36 pape Exp $ # uptime 19:46:24 up 99 days, 19:56, 3 users, load average: 0.15, 0.12, 0.12 # ps axuw |head USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.0 24 0 ? SW Feb07 0:05 runit root 2 0.0 0.0 0 0 ? SW Feb07 0:01 [keventd] root 3 0.0 0.0 0 0 ? SW Feb07 1:10 [kapm-idled] root 4 0.0 0.0 0 0 ? SWN Feb07 1:09 [ksoftirqd_CPU0] root 5 0.0 0.0 0 0 ? SW Feb07 13:23 [kswapd] root 6 0.0 0.0 0 0 ? SW Feb07 0:00 [bdflush] root 7 0.0 0.0 0 0 ? SW Feb07 10:18 [kupdated] root 53 0.0 0.0 0 0 ? SW Feb07 0:00 [msp3410 [auto]] daemon 115 0.0 0.0 1412 8 ? S Feb07 0:00 /sbin/portmap
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.0 24 20 ? S Nov22 0:01 runitI recommend doing this; for instructions, see How to use dietlibc.