I only hate it because I can’t figure out how to run a blocking script before everything else when a suspend is initiated.
Do scripts in /usr/lib/systemd/system-sleep/
not block? I’ve never had one fail to complete before suspend. I had to use one last year to dump debug stats before and after sleep while we were helping debug Cezanne sleep issues.
I guess not because in my attempts to get this working I did put a script there. Does * expansion not work in these scripts? Mind sharing your script if you still have one? I have 3 tabs open to learn systemd when I have time, I did watch a video so far :)
I’ll have to dig them up the next time I fire up the laptop I used them on, I’ll also look and see if I shoved them into a git repo.
There’s some discussion here on the Arch forum that should be able to get you rolling though: https://bbs.archlinux.org/viewtopic.php?id=276046
That should show you the general form those scripts need to take. I only had to use pre/post sleep, I never needed a level parameter.
Does too much for one tool (against unix philosophy) and has poor interop with other tools (binary logfiles).
That’s not really true. systemd is split up into many different, independent binaries, and each of those does one job and does it well.
If I remember correctly, there was a ton of pain configuring a minimal systemd. I am unaware if that has changed much in recent years.
Here is an old thread talking about it: https://unix.stackexchange.com/questions/150975/what-is-needed-for-a-minimal-systemd-boot-to-launch-getty-on-a-virtual-console
Does too much for one tool (against unix philosophy)
This tired, old argument needs to die already.
Do you use browser extensions? That breaks unix philosophy too.
You just compared a browser extension and an init system that takes proc id 1. The unix philosophy is about what runs as processes at the system level.
The unix philosophy is about what runs as processes at the system level.
I don’t know what you mean by “system level” (cat
is userspace) but I don’t believe there is any clarification about what kind of applications should apply to the unix philosophy or not. It doesn’t say that applications “should do one thing and do it well only if it is a system process or terminal based program built for purely shell environments.”
Also, if the argument was exclusively about OS processes, dbus should be in the firing line of everyone in the anti-systemd camp too. That never gets the same level of hate.
The unix philosophy is old and, while nice to have, is insufficient to fully address the needs of the modern world. It’s not as simple today as it was in the 1960s and 70s and we need to embrace change to progress.
Btw. The Linux kernel does more than one thing. But monolithic kernels are much better for small student projects that won’t be relevant anymore, when Gnu Hurd comes out
Monolithic kernels are also generally more performant, compared to micro-kernels, it turns out. A bit counter-intuitive at first but, makes sense when you think about it.
Micro-kernels in general-purpose OSes suffer from a death of a thousand cuts due to context switching. Something that would be a single callback to the kernel in a monolith turns into a mess of calls bouncing between kernel and user space. When using something like an RTOS where hardware is not likely intended for general-purpose computing, this is not an issue but, when you start adding all of the complexity of user-installable applications that need storage, graphics, inputs, etc, the number of calls gets huge.
Binary logs are annoying, but once you get the hang of journalctl, it’s not so bad. That is about my only remaining hate for it.
In its early days, it was a serious pain. Its service management was annoying and is still a bit scattered to this day. It has improved a ton, for sure.
Then there was PID 1. Here is a legacy discussion about it as I refuse to talk any more about it these days: https://news.ycombinator.com/item?id=10485131
Above all else, it was kinda forced on us. Most of us were comfortable with sysv already. If I remember correctly, people often said the main dev for systemd could be a real jackass. I have no judgement or experience regarding that though.
Above all else, it was kinda forced on us. Most of us were comfortable with sysv already.
And at least for me it solved a problem which didn’t exist. Sure, there’s some advantages, but when it rolled out it was a huge pain in the rear and caused various problems and made things more complicated for no apparent reason.
Most of the bolted on services are rather shitty. ResolveD in particular is straight up hot garbage unless the only thing you are comparing it to is nscd. I like shipping all my logs to a centralized service and journald just gets in the way. It feels like they took upstart, bolted on some really crappy daemons,
Everything everybody else said plus everything with Systemd is just… more complex. With OpenRC, it felt like I could keep all the information I needed to use and administrate it in my head. With Systemd, I have to look stuff up all the time.
A stop job is running … 3/180 s
Wooow, 180 seconds (which probably won’t even get to timeout) when shutting down my computer. My life is ruined forever because I had to wait sooooo much. /sarc
My sibling in satan if 2 minutes is enough to murdercide your UPS battery, you need a new battery. 💀