this post was submitted on 16 Dec 2024
77 points (90.5% liked)
Linux
48705 readers
1056 users here now
From Wikipedia, the free encyclopedia
Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).
Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word "Linux" in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.
Rules
- Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.
- No misinformation
- No NSFW content
- No hate speech, bigotry, etc
Related Communities
Community icon by Alpár-Etele Méder, licensed under CC BY 3.0
founded 5 years ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
view the rest of the comments
For anyone else reading along: This person is talking out of their ass.
I also find that calling systemd "SystemD" is a tell that someone is unfamiliar with or has a conspiratorial relationship to it. It's named "systemd", all lowercase (but I'm likely to capitalize it on sentence starts like a normal word). Using an ungrammatical uppercase D at the end of the word, that isn't even something the creators claim is correct, is … a choice.
(And it's a choice that reminds me of e.g. how rabid anti-cyclists in Norwegian can't even spell "cyclist" correctly, but instead consistently use "bicycleist".)
Ok, fair point on the capital D, I must have read it like that years ago and it stuck. I shall have to make an effort to unlearn it.
As to the rest, systemd has been a constant thorn in my side ever since L. Pottering published "Rethinking PID 1" back in 2010 or so. I found, and still find, that most of the assertions and actions in that document either don't really hold, or just aren't really relevant. Basically it's trying to solve a problem that really wasn't an issue in the real world, and does so in such a massively overbearing way that everything actually becomes more laborious than it otherwise would be. From my perspective it's an unnecessarily complex and poorly architected attempt to answer a need that was better served in different ways. That it's become a near mono-culture is deeply concerning.
I've also run into all sorts of awkward edge cases and misfeatures over the years, from the automounter that occasionally didn't to race conditions that only manifest at the worst moments, none of which would have occured had the basic tenet of "do one thing and do it well" been followed. The extreme verbosity of the configuration, and unnecessarily large number of places it can be spread just serve to make it even more unpleasant to deal with compared to the simplicity of init scripts, crontabs and the like.
The sad thing is, there's undoubtedly some good ideas buried in it, but they could all have been implemented much more lightly and in a way that worked with the rest of the ecosystem rather than fighting it. Things like starting daemons in what is essentially a repeatable sandbox, or being able to isolate logging per service. They could, and had both been implemented already, but systemd has a real "not invented here" problem, so everything was built again, with all the attendant bugs, and design issues that inevitably brings.
Ultimately clients pay good money for me to look after their systems, systemd or not, so I probably shouldn't grumble, but I miss the days when Linux was a clean and elegant system, without this multi-tentacled thing sitting on top of it.
I also have a sysadmin/devops/sre type career, and my impression is rather the opposite: With systemd Linux became a lot cleaner and predictable, compared to the mess of shell scripts we had before. There's never been anything clean or well-architected about shell scripts, they've always been a messy collection of not-quite-the-same languages that have all safeguards turned off by default, and it's up to the programmer to turn them on and hope they actually work. Good for one-shots and exploration in the terminal, though.
I also don't miss logrotate or finding out that some app places its logs somewhere mystical. Being able to read app logs just by knowing the service name is wonderful, as are the timestamp and boot arguments.
systemd didn't appear as just one guy's brain child, nor could it rise to the dominance it has if the way it works was as controversial or bad as it is in your opinion.
I haven't been on-call for the past few years, but my impression is that there have been fewer and fewer on-call events over my career. That's also largely on app developers and a shift to Kubernetes, but it's a generally pleasant change. There's nothing I hate more than being woken up.
I agree with the sentiment regarding being woken up, but I used to look forward to being on call. I could go to bed happily, knowing I was earning a significant premium and I'd still get a good night's sleep because the systems just didn't go down. I had the advantage that most of the customers I supported had similar requirements, so I had their systems locked up pretty well. Minor problems (disk space. Why is it always disk space?) would self heal, catastrophic failures (hardware failures or the engineer who supposed to replace a component unplugging the wrong server) would fail over to the rest of the cluster. I never had much trouble with logging either, it was typically one of the first things set up, and I had most of the setup automated to avoid missing anything. I suppose the thing was I was supporting systems I'd built, and I'd built them to ensure I didn't have to be woken up.
I do a lot more troubleshooting and rescue type work nowadays, and the number of times I run into systemd components just not doing what they should is frustrating to say the least. Being able to pull the logs by knowing the service name would be nice, but a) you could already do that because you set up different services to log to different places and b) you don't always know the service name in question. Being able to just grep the log directory is a lifesaver. You can still do that, but only because distros set systemd up to log to file as well as it's binary format. I loathe the way systemd ends up spreading it's unit files over about a dozen different directories, with overrides increasing that even further. I just want to know what services I've got and what will start up, in exactly what order, on the next reboot, dammit! The last one is particularly tricky as, due to services being started in parallel, you can't predict exactly what order things will actually start between targets. That shouldn't matter, units should have all their dependencies properly listed, but it's no fun tracking down a race condition that only happens once every x reboots when a particular network service takes a few hundred milliseconds longer to come up. Give me sequential boot any day. It might take a few tens of seconds longer, but it happens the same way each time, and I only need to look in one place to know what that is.
As to systemd's dominance, once Redhat, where Mr Pottering worked, chose it, it became hard for other distros not to. Derivative distros obviously went with it, and if you look back through the various email discussions, it was far from a unanimous choice for distros like Debian to choose it. They did so eventually mostly, as far as I can see, because it would theoretically make packaging easier. Fortunately they still support sysvinit, so all is not lost for those of us who want a mainstream distro without systemd bloat.
Shifting stuff to kube is definitely goot for making things more robust, so long as you've got the underlying clustering working, and I quite like working with it too. Once you realise it's basically just a database and message queue with a bunch of controllers for managing storage, networking, containers and the like, and the ability to extend that, you can do all sorts of fun things with it.
Anyway, I've gone on for long enough. If you're a sysadmin and the number of trouble calls is going down, then you probably don't hear this often enough: well done, you're doing a great job.