With people arguing how awesome, manageable and maintainable old shell-script based init system was I feel like I've been too unlucky to hit every single problem it had. (Or that I was running something else.)
I've seen my system boot take a far longer time than I could bear and seriously harm my experience (what if your TV set took 2 minutes to boot?), yet I still read people deciding for me that I should not care that much.
I've see init scripts shitty beyond belief (and I'm not even taking into account what various third parties ship). Ever seen Fedora's tomcat init script? Most of them are way too long, all of them duplicate mostly all of their code.
Also, many of them are just plain broken and racy -- setup includes external service monitoring (such as monit), it's somehow easy for it to attempt to run the init script at the same time you run it leaving the system in inconsistent state (e.g. daemon running and no pid file). Ironically, systemd not even fixes the problem but also removes the need for such software in some cases.
Besides what's stated above, thing that I like about systemd the most is the inetd-ish service activation. Part of my job is setting up systems consisting of numerous services with rather complex dependencies. Some of the services are in-house grown, most of them are daemons shipped with the platform we use. We run hundreds of nodes for production installation (what we like call that "cloud" so that we're able to sell it). We also perpetually test the thing, which involves creating countless new installations, starting the services, restarting them and shutting them down running various automated tests in between. This is a nightmare with the old init system we use. We can never know when is the service ready to use which is why we ended up with horrible polling shell scripts, often inlined into our test tooling or even in puppet. We need to very carefully order the actions we take and with too many services it's way easy to get wrong. Systemd would do this for us.
I've even seen service stop not work properly (leaving out lurking processes) with old init system for way too many times and services. (I've probably never seen it shut down tomcat properly; it's surprising how a single shitty servlet can get the init system tooling stuck).
And there seem to be more nice things about systemd. The daemon startup messages don't get lost if service misbehaves. Given how broken stock Fedora installations are these days, this has turned out to be a big time-saver for me. Also, it seems to be able to set up control groups for daemons automatically; this could make things simpler for us since we use cgroups for resource management of our services pretty heavily.
I've not been adventurous enough to run Fedora on daily basis, thus I might not be familiar with all the problems people could have with systemd during its early days (and I yet am to see a good example of what has been easy with old init systemd, but is not with systemd), but I do run it regularly to keep myself up to date and I've been very impressed with systemd. We'll celebrate the day RHEL 7 is released and systemd hits our infrastructure.
Copyright © 2017, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds