So yeah the bird was me. But back in the day there was linux with a bunch of config files and windows with the registry.
It could be a pain to deal with config files but it was nowhere near as bad a dealing with the gigantic mess that was the windows registry. So someone trying to move linux away from one of the things that made it better then windows to a windows like system seemed like a horrible idea.
Combine that with the main systemd guy coming off as a bit of a jerk online and the resistance is understandable.
Coming from software development, the systemd controversy is starting to feel more familiar as I learn more of it.
It really reminds me of what happens sometimes in backend web systems development when an overly complicated framework takes over a programming language community. Getting anything done no longer becomes about using the tools to interact with HTTP, or the language runtime (if relevant), or anything else absolutely essential to the task at hand - it’s about learning the framework itself and its peculiarities, its specific abstractions and semantics wrapping real concepts.
An example is Spring Framework. One does not simply write a little bit of code to cache something in memory at the place one needs it, no! One must use a ProxyFactoryBean to apply a CachingInterceptor, in the bean configuration XML of course! (Of course being Java, you have the extra layer of indirection and fakery as the Java community is/was full of people obsessed with shoving everything possible into a design pattern for cred.)
One does not simply read a systemd log file using cat, nor filter with grep. One must use journalctl with its specific arguments to filter by specific things. Because the logs are binary or something. I feel like I’m not learning Linux/UNIX anymore, I’m learning systemd.
I do like systemd’s unit system, with its whole dependency graph for reaching certain targets, etc. However, given the nigh ubiquity of systemd, I’ve not really had much of a chance to learn any alternatives, so it seems I must simply get used to it regardless.
I still use grep with journalctl because I find their built-in filter to be poopy.
Ok so I’m just my own system administrator, yet I like systemd because I remember how much less… reliable the former alternatives were on my computers.
BUT. I dislike having to learn more commands just to read my logs, and systemd timers are awfully complicated when I just needed what cronjobs already did.
Ok so I’m just my own system administrator
I manage what people call Large Enterprise. As my side gig, I manage Small Offices / Branch Offices.
I remember how much less… reliable the former alternatives were on my computers.
Remember that systemd is also used on massive server farms that need consistent fast reboots during recovery from vary occasional mishap. These things have all but a stopwatch running.
My god, is systemd ever a piece of crap. Coupled with ‘consistent[ha!] naming’ it’s the single most likely thing to cause a field engineer to scream into the partially-lit datacenter in abject rage and hate. Even more if they remember how fucking sysVinit actually delivered on the promise. Even more if they still remember how well inittab Just Worked.
I read starry-eyed lennartophiles praising the reliability and ease of use and I wonder whether they didn’t know the basics of systemd, or just don’t understand the problems plaguing servers now. Like apple fans, screeching at non-apple users, I worry this lack of understanding causes a very biased approach where issues with apple/systemd are “just impossible to solve” where android/runit issues are “obvious indications why they’re broken systems and should be avoided; and also you’re old if you like them.”
BUT. I dislike having to learn more commands just to read my logs,
You signed up for this.
and systemd timers are awfully complicated when I just needed what cronjobs already did.
You signed up for this.
It’s like those shitty cable bundles where you want HBO Max but also have to buy 4 channels of Golf, 2 of only Nascar-based Reality shows, and one that just shows Real World marathons, over and over; and also have to pay for all 8 .
THE UNIX PHILOSOPHY is to not over-reach the designed purpose. It allows for combinations of tools based on what’s more reliable/current/compatible at the current moment and keeps tools concise. Having things move over to timers from cron or xkcd/927 logging because Lennart and Kay couldn’t be bothered to understand and work with what’s existing, and deciding to replace everything by this growing blob of monolithic dreck, is bad for a reason that’s been proved in the past. And those who are too lazy to read history will elect fascists. or something.
ITT: systemd haters get overly upset about someone on the internet deciding to use systemd
So, I don’t know as much as you do, but I’m wondering; if it’s that bad, why did it ever get popular? It’s not like people who write/program/maintain/deploy Linux aren’t usually very knowledgeable. They’re usually experts and computer scientists. It seems to me, at least, if it’s that bad, it would have never been adopted so widely? Is Systemd pulling a Microsoft and bribing people or something?
No, it’s much simpler- distro maintainers moved to it because it’s simpler for them to roll out, and they don’t get blamed for the problems.
My god, is systemd ever a piece of crap. Coupled with ‘consistent[ha!] naming’ it’s the single most likely thing to cause a field engineer to scream into the partially-lit datacenter in abject rage and hate. Even more if they remember how fucking sysVinit actually delivered on the promise. Even more if they still remember how well inittab Just Worked.
I agree with everything you’ve said, but this paragraph in particular resonated. We used to have a clean, simple, and predictable, system. Now we have exciting race conditions, a massively over complicated monolith (“but it’s not”, I hear the Lennart’s fans scream, “you can just install the bits you want”. To them I say “Try it. You’ll soon wish for the sweet release of death. Install a good init system instead”), and once simple tasks being swamped by poorly designed tooling.
I’d say the entire design of it is badly thought out, but that implies there was much though given to it’s design at all. It seems more like it simply coagulated. As another commenter said, it’s become popular because it makes the disto builders’ lives easier, not because it’s better, and that leaves everyone actually using the thing in the lurch.
I’m an older fella who supported BSD systems before transitioning careers, the damn fact that you can’t just read a log file by default was enough to get my hairs up. I like using other simple tools to handle parsing for important info or events as well.
I still subscribe to the philosophy as you put it, a system is only as reliable as it’s components… the sum of simple tools worked way better than systemd ever has in my opinion.
As a developer who got into DevOps and now is learning the vast world of sysadmin stuff, it’s validating to see you say that. Because the damn logging system is my number 1 gripe as well and it discourages me from doing any real digging. Why would I when I can just spin up a new VM?
Thank you for this. I haven’t been any sort of sysadmin in a good long time and when I was, I didn’t manage more than three or four servers. But I am fed up enough with SystemD to finally go to the trouble of switching back from Arch to the Gentoo I used to run and love. And it’s a breath of fresh air dealing with OpenRC (and generally the whole Gentoo ecosystem) again.
Unit files are a pain to deal with. I love that with init scripts, if I can write Bash scripts, I can write init scripts without having to look up every little thing in Google and in man pages.
I won’t say a bad word about Gentoo, I enjoyed running it, but if you want to use sysvinit, Debian works fine with it. There’s a page on the wiki (linked form the install guide) on how to do it here. I’ve not run into any issues over the time I’ve been running like this, and having a clean init system makes my day a lot better.
You can use systemd with the classic logging tools by installing and enabling their respective service if you prefer. This will forward all messages to them. You even get a more comprehensive log than before systemd as the latter will even forward the messages that were sent before the logging service was started.
Edit: similarly for cron, you can still use the classic tools. I see their appeal in ease of configuration. Though in my opinion, systemd timers are more powerful and better integrated (don’t ask me why, I made that assessment years ago) so I accept that increased complexity.
For logs, I actually prefer the systemd journal though
Yeah but you can use
journalctl
on literally everything from binaries to units to cron jobs with the same interface. You don’t need to find the log file just punch it intojournalctl
So far I’m not in love with systemd-networkd…
yeah, networkd isn’t better than Network Managar or just static IPS imo.
Also, resolved is horribly buggy and unusable. Tried for a while and switched to dnscrypt proxy 2 instead
Oooooh, wait. Does Quadlet let you run containers via systemd unit files??
Quadlet is a tool for running Podman containers under systemd in an optimal way by allowing containers to run under systemd in a declarative way.
https://www.redhat.com/en/blog/quadlet-podman
That’s cool! Thanks! TIL!
It’s like
docker-compose
on steroids if you don’t use Kubenetes and want to treat your machines like pets not cattlepets not cattle
I love this one because it flirts with all the bad things of 30-year-old RFCs and forgets sheepdogs in the tight narrative handwave.
Ok I don’t know how sheepdogs fit into the analogy but IMO they are neither pets nor cattle. They are like coworkers, and if I have to risk one every now and then to keep the wolves busy, so be it. It’s a dog-eat-dog world.
Here’s a good example for Jellyfin that got me started with quadlets.
Note on the above: the linuxserver.io jellyfin image has an ffmpeg bug in it, so swap to the official docker image in the config.
I
lovehatelovehatelove systemd!It’s great sometimes but trying to deal with systemd-related objects in an OpenBMC Yocto project has been an absolute nightmare. Like many things, it’s got ups and downs.
Benno Rice gave an excellent talk on this:
But it doesn’t follow the Unix Philosophy!
Who cares? It makes my life so much easier!
REEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE!
When will you learn? When will you learn that your choices in process management software have consequences?
GNU is Not Unix
…“No, not like that”
Linux Is Not UniX
not everything needs to be a file.
in fact most things shouldn’t.
Pretty sure they meant the whole “do one thing, do it well, and prefer composition” part.
But I’m more interested in what parts of systemd don’t follow the file metaphor, and what things you think shouldn’t follow that metaphor? How would you interact with those things?
journalctl
. I don’t give a damn as to where the logs are, and I just have telljournalctl
to give me the logs for whatever I want.That’s all fine and good, but that’s not quite related to the “everything is a file” metaphor. The data is still stored in files and accessed using conventional io and the command itself is routinely piped to other commands.
Everything being a file is extremely pervasive in unix, and I couldn’t think of what systemd was doing that went in opposition to the metaphor.
journalctl. I don’t give a damn as to where the logs are, and I just
But for a tool that read log configs and find that out for you, you’ve let Timers into your home.
Heh? Why?
That ain’t the Unix Philosophy I was refering to.
Thats an interesting opinion, unfortunately I disagree so it must be wrong :3
/s /j
I’m still looking for a cheatsheet mapping journalctl commands to plain tail+grep on var log files…
It adds more functionality but makes adminstration more complicated.
Like I was reading posts on Lemmy yesterday that the reason Nextcloud file sync is preferred over seafile for some is because seafile stores the data in a format that can only be read by seafile. This is what systemd does.
Trash