So there are various init systems out there, from systemd, to runit, to shepherd and many others. I’ll list them here:
- Busybox Init
- rc.d from the BSD’s
- Launchd from Mac OS
Which do you prefer and why?
It’s tough for another init system to beat Systemd. It caused a whirlwind about 10 years ago. It now is utilized by most of the well known, widely distributed flavors of Linux. Ubuntu, Fedora, Red Hat, Arch, Debian, OpenSuse, etc. That is wide adaptation representing millions upon millions of installations. That means that I can get in front of most machines and know exactly how to manage services from one distro to another.
It fixed problems with SysV and has many features that make it suitable for all of the above and more. It is easy to manage – learn about 6 commands and you can check, stop, start, and modify all of the services on your machine.
It has a robust scripting language – it can handle tasks automatically and do that flawlessly.
It can be setup to “wake” on port activation and respond by starting services. It can be modified to operate with timers and limits on services.
Plus there is excellent logging for when things do go as planned.
But, I should say that I’ve only worked with one other init system other than systemd. So, my personal experience is limited.
I use systemd and always have since it was implemented in Ubuntu and Fedora. I don’t really see any issue with it whatsoever when it comes to my usecase so I just use it.
I suspect the biggest reason people didnt like systemd was because of how much dominant it was becoming and how quickly that happened and people simply dont like change. This would require people to rewrite so many configs and scripts and stuff that they preferred to fight it than adapt. I have had many people tell me this directly but I dont know if that is a universal thing, seemed pretty common though.
I do not prefer any. I just use the default and that is mostly systemd.