During the last ten years many
initd alternatives have appeared. Some are very “SysV-like” like
initng. Others are way more radical in their design both more modern and complex (
But what if you need a simple and lightweight alternative with supervision capability ?
runit is a very good choice, and you can use it to replace or complement
aptitude install runit
Add a service to supervise
The core of runit is the
/etc/sv directory. This directory contains a subdirectory for each process that runit should manage. Let say we want to add a varnish service:
# vi /etc/sv/varnish/run #!/bin/sh exec 2>&1 . /etc/default/varnish rm -f /var/lib/varnish/$INSTANCE/* exec varnishd -F $DAEMON_OPTS
Simple and neat. Note that the process shouldn’t be launch in background / daemonized mode. If necessary add the appropriate option. Then:
# chmod +x run mkdir supervise chmod 755 supervise
Now don’t forget to add a diversion to the official initscript and then enable the supervision:
ln -s /etc/sv/varnish /etc/service/varnish
The sv command
sv status gu-monprojet sv check gu-monprojet sv up gu-monprojet sv down gu-monprojet sv restart gu-monprojet
As you can see commands are very straightforwards.
sv can be use to send pretty much every unix signal (HUP, USR1, USR2, etc…).
Logging process output
runit process logging is dead simple: let your process send it data to
svlogd will do the rest. This program collect your process’s data and save it into a system-standard location. It will take care of rotating log file if necessary by itself.
To add a log to a process create a
# vi /etc/sv/varnish/log #!/bin/sh exec svlogd -tt /var/log/varnishd
runit, just follow the official documentation.