My initial thoughts were less than positive, just because building it is a less-than-stellar process. Part of that is because it has a couple of deps that must also be compiled (skalibs and execline), and part is because it follows the slashpackage conventions (http://cr.yp.to/slashpackage.html).
Now that I've got it build, the next hurdle is making init scripts in execline. It's a fairly simple language, and I enjoy the premise behind it, where scripts should be clear and deterministic.
Overall, s6 provides a lot more helper tools for daemon management than runit did, so it looks like it's gonna be great for my use case. I've got an automated build set up to handle making a Docker image with s6 prepared:
Note that:
- You do not have to follow the slashpackage convention to use or build s6. You can configure it out.
- You do not have to write your init scripts in execline. Any scripting language, including the shell, will do; I use execline because it allows me to do things /bin/sh does not, or not easily.
- There is a mailing-list, supervision@list.skarnet.org, dedicated to software like s6 and runit. If you have trouble building, installing or using such software, please subscribe and ask for help. I'm absolutely willing to make s6 easier to use, but I need the feedback.
Thanks for giving s6 a chance! You won't be disappointed - and if you are, make sure to let me know why.
Seems you are knowledgeable about these matters, I am not. So could you put in perspective why would runsit be interesting. I have run into several names that claim to handle this problem, you have mentioned s6 and runit, then there is monit, launchd, supervisor... Are there some glaring lacks that needs to be filled. Do they all do the same thing or do they have specialized niches ?
I guess I am asking for a lot, no need to indulge, but if you do, much appreciated.
Unfortunately, I can't really say whether or not runsit is an interesting entry in the group of process management tools. While I'm very willing to dive into the code if I run into issues or am looking to customize things, the lack of any documentation or overview has prevented me from trying out runsit yet. Partially, this is for the obvious reason: it's difficult to get started with a tool that doesn't document how to use it. Additionally, the lack of documentation is a warning sign that this project won't be maintained in the long term as a community project. Which isn't to say that projects that begin without a strong focus on documentation or community cannot change in the future, but in my experience the vast majority of these projects end up being "a thing the author wrote for themselves, which becomes abandoned when they no longer use it".
As far as the variety of other tools:
launchd is an interesting concept but hasn't picked up a ton of adoption by things other than OSX.
I've used supervisord for some other projects, but never as the main init system, and the python dependency has thus-far prevented me from doing so: I like my init process to be statically compiled so that the initial system startup has as few deps as possible.
I really enjoyed runit; I'm only trying out s6 now because it has a few more helper tools for controlling process startup and management, and appears to have better support for log handling. Runit was very powerful as an ultra-light-weight init system, and both runit and s6 have very thorough docs, with runit having a large catalog of community-provided initscript examples.
Now that I've got it build, the next hurdle is making init scripts in execline. It's a fairly simple language, and I enjoy the premise behind it, where scripts should be clear and deterministic.
Overall, s6 provides a lot more helper tools for daemon management than runit did, so it looks like it's gonna be great for my use case. I've got an automated build set up to handle making a Docker image with s6 prepared:
https://registry.hub.docker.com/u/dock0/service/