On 11/10/16 09:33, Andy Mender wrote:
I am a "journeyman" UNIX user, currently trying to implement runit
as a substitute for systemd on a number of GNU/Linux distributions.
I already have the ./run service scripts per the original documentation for
However, I don't fully understand how logging and dependency resolution
1. When running several services with the service script as ./run and the
logging daemon's service as ./log/run,
does it mean that there are several instances/PIDs of the logging daemon?
Each attached to the service
runsvdir spawns (fork+exec) one runsv instance per service directory.
If the service directory contains a "./log" subdirectory it creates a
pipe and connects "./run" with "./log/run" into a pipeline. So yes every
services gets its own logging process if it uses the runit logging
scheme. Don't worry about the resource consumption because these are
very small processes.
2. If several services rely on a common daemon, like dbus or udev/eudev, is
the said daemon launched multiple times?
Runit doesn't track dependencies directly, but it can handle them. This
is done by calling sv start $DEP_1 $DEP_2 etc. in the ./run script.
3. I noticed the ./run scripts are essentially Shell scripts by default.
Does this resolve the commonly perceived
limitations of System V init scripts?
Runit contains just enough features to offer comfortable service
management as long as all services are represented by a long running
Most "./run" scripts are very simple but highly repetitive (start
dependencies, some simple setup, limit the process resources, drop
privileges, exec into service process).