Ask Slashdot: Can You Say Something Nice About Systemd?
ewhac writes: "I'm probably going to deeply deeply regret this, but every time a story appears here mentioning systemd, a 700-comment thread of back-and-forth bickering breaks out which is about as informative as an old Bud Light commercial, and I don't really learn anything new about the subject. My gut reaction to systemd is (currently) a negative one, and it's very easy to find screeds decrying systemd on the net. However, said screeds haven't been enough to prevent its adoption by several distros, which leads me to suspect that maybe there's something worthwhile there that I haven't discovered yet. So I thought it might be instructive to turn the question around and ask the membership about what makes systemd good. However, before you stab at the "Post" button, there are some rules...
Bias Disclosure: I currently dislike systemd because — without diving very deeply into the documentation, mind — it looks and feels like a poorly-described, gigantic mess I know nothing about that seeks to replace other poorly-described, smaller messes which I know a little bit about. So you will be arguing in that environment."
Nice Things About systemd Rules:
Bias Disclosure: I currently dislike systemd because — without diving very deeply into the documentation, mind — it looks and feels like a poorly-described, gigantic mess I know nothing about that seeks to replace other poorly-described, smaller messes which I know a little bit about. So you will be arguing in that environment."
Nice Things About systemd Rules:
- Post each new Nice Thing as a new post, not as a reply to another post. This will let visitors skim the base level of comments for things that interest them, rather than have to dive through a fractally expanding tree of comments looking for things to support/oppose. It will also make it easier to follow the next rule:
- Avoid duplication; read the entire base-level of comments before adding a new Nice Thing. Someone may already have mentioned your Nice Thing. Add your support/opposition to that Nice Thing there, rather than as a new post.
- Only one concrete Nice Thing about systemd per base-level post. Keep the post focused on a single Nice Thing systemd does. If you know of multiple distinct things, write multiple distinct posts.
- Describe the Nice Thing in some detail. Don't assume, for example, that merely saying "Supports Linux cgroups" will be immediately persuasive.
- Describe how the Nice Thing is better than existing, less controversial solutions. systemd is allegedly better at some things than sysvinit or upstart or inetd. Why? Why is the Nice Thing possible in systemd, and impossible (or extremely difficult) with anything else? (In some cases, the Nice Thing will be a completely new thing that's never existed before; describe why it's good thing.)
We will assume out of the gate that systemd boots your system faster than ${SOMETHING_ELSE}, so no points for bringing that up. Bonus points are awarded for:
- Personal Experience. "I actually did this," counts for way more than, "The docs claim you can do this."
- Working Examples. Corollary to the above — if you did a Nice Thing with systemd, consider also posting the code/script/service file you wrote to accomplish it.
- Links to Supporting Documentation. If you leveraged a Nice Thing, furnish a link to the docs you used that describe the Nice Thing and its usage.
By
eldavojohn
Systemd has a nice ring to it. The way the syllables roll off my tongue pleases me greatly. It could be the title of a great anime series. It could even be the lost name of an ancient forgotten god-king. It might even be the name I give my first born. It sounds much more authoritative and genuine than sysvinit or upstart or inetd. For instance from my non-technical fourth grade perspective this is what I interpret the others to mean:
Contrary to your base assumptions, systemd does not actually boot faster on my Pentium II (Intel inside) system. I just like the way it sounds.
My work here is dung.
I've done migrational upgrades to System-d with Arch Linux with zero problems in addition to using it with new installations. It works fine, and I'm still really confused about the jihad-level hatred it seems to engender in some people.
AntiFA: An abbreviation for Anti First Amendment.
Betteridge's law of headlines is an adage that states: "Any headline which ends in a question mark can be answered by the word no.
Is this the right headline to apply it on?
No, we can't.
aaaaaaa
I like that in the future when the integration is more complete, I'll be able to install a database or a webserver and then once in a full moon when a cosmic ray hits the process and kills it, systemd will just restart it.
Yes, you can do that with other tools too once you've learnt your lesson (many years ago I had 1.5 year uptime with Apache and then it suddenly crashed) and I am using one of those at the moment. What I like is that this will just work out of the box for newbies and veterans alike with no clunky configuration/interfacing.
If you have a service called 'foo', then 'systemctl status foo' not only shows you whether the service is running, it also shows you the last 10 log entries created by that service. This is great when the service failed; usually the error message will be right there.
How does it do this? Well, because all processes created by the service are in the same cgroup, all of the log messages (and even anything they print to stdout, which would have been lost otherwise) can easily be tagged with the service name (and a bunch of other metadata). You can use journalctl to query the journal for the logs from a specific service, and systemctl status does this for you.
Okay, I'll play along: Systemd was the final straw that made me switch my Linux servers to FreeBSD.
See, was that so difficult?
Using the information gleaned from this year old bug I was able to create a Tower of Hanoi solver using the dependency resolver's attempts to determine whether a NFS filesystem should be mounted after the network comes up or not. Every attempt to start Apache (which depended on the filesystem) represents moving a disc to the middle tower.
Most Linux users care what they run. Users who don't care run Windows.
Great conversation piece. Really gets people talking.
just ignore the rules. Why are you even bother by it?
My problem with things like systemd is not that they have nice features - lots of things have nice features. Windows' Shadow Copies is a lovely feature that's a lot easier to configure that some alternative equivalents, etc.
It's that they put those nice features into some new paradigm of configuration when you could have just added them to the existing system.
Reliable servers don't just crash. This is the Windoze (C)(TM) method of reliability by restarting. Defensive nanny processes are a hack and hardly unique to systemd. They invariably result in trying to restart a broken configuration 1000 times in a row. Death to systemd.
Starts with "system", ends with "d".
Seriously, I've been a Linux Guy since the 90ies and I honestly couldn't care less.
Anything I know about init is about runlevels - and those are a really neat thing. I mean really cool. You can fiddle with those using mc (Midnight Commander) and debian has a stack of 4-6 of those preconfigged and set up by default - last time I checked, some 7 years ago or something anyway.
Point is, my grandma can set up a runlevel that ex- or includes the LAMP stack in it's 'launch', 'init' or whatever-it's-called sequence and I can set my box to it by typing "init [simple Int here]" for my box to go there.
Again, that is pretty neat and cool and the best working solution I've run into so far.
Way better than anything in the Windos world, that's for sure.
If this "systemd" thing - whatever that is - doesn't break this or offers a neater improvement on that runlevel stuff or a way better concept that's worthwhile moving into, perhaps like the SVN vs. Git thing in which Git comes out on top IMHO - without requiring some bullshit GUI tool to be usable, that's all very fine and dandy with me.
If, on the other hand, you're going to push this new fad and hurt me wile doing so, I'm coming for you some time in the future. With a baseball club and my mafia friends. Other than fucking around with one of the best filemanagers ever - Konqueror - and replacing it with an inferior dolphin - this isn't some GUI toy you should fiddle with. This is Linux at a level where it's actually *the* industry standard. As in 'no other even comes close to this level of reliability and quality". Fucking that up would be a really stupid idea.
Otherwise I really positively couldn't care less - and that's how it should be, no? Except for, maybe, if I were a System Developer or Distro Release Manager or something.
My 2 cents.
We suffer more in our imagination than in reality. - Seneca
'systemd' needs to stay optional, and I mean that explicitly. optional. Not "default", and not "optional, in the sense that you then have to do the maintainer's job for them because they are too lazy to consider people not using systemd, because systemd is the default, and the maintainer does not want to consider the people that dont want systemd, regardless of the reasons or circumstances." kind of way.
Systemd is potentially useful for only a subset of the linux ecosystem, and forcing this kind of change is a bad thing.
Please allow me to explain why:
Systemd seeks to be a "Be all, end all solution to system initialization", which ultimately means that it will itself try to cover every possible thing that its maintainers believe needs to or should happen during system init. That in and of itself means that it will be large and cumbersome; exactly the things that embedded linux should avoid, where ultra-minimalism is king. (We are talking systems that have just a few dozen megabytes of memory, and just a few hundred megahertz of processor power at the most. Having all that gobbled up by the init system as soon as power is applied is not going to win you any trophies, and boldly asserting that embedded devices need to obey a desktop paradigm is throwing the baby out with the bathwater.)
This is especially true with "reference distributions", like debian. Debian "console only" deployments with tools like debootstrap are reasonably common with embedded devices, as are deployments that make use of chroots for specific sandboxed services. A chroot does not need a full blown init like systemd. It is best served with a simple init script. Building a distro with the intention of killing simple init, and replacing it with a monolithic solution like systemd will make service daemons much more difficult to control in this way, and will actually rob core functionality away from the distro that goes that route--- exclusively in favor of desktop flavored deployments.
Linux is more than desktops.
Linux is routers.
Linux is home automation systems.
Linux is servers performing specialized functions.
Linux is so much more.
Please be more considerate about trying to force systemd into debian. Optional is OK. Optional like "gnome vs kde vs xfce vs $ManagerHere". Not "optional" like "unity on ubuntu". Debian is a reference distro, upon which many other distros are based. It has already found its niche in the linux ecosystem. Please dont try to reinvent it.
The idea of booting services in parallel is nice, but the problem is that apparently it doesn't have a way to specify that you need to wait for a dependant service to hold off until the initialization of the dependancy is complete. Systemd considers it "booted" as soon as it launches, which causes people problems with unreliable network initializations and such that have been resolved for Sys-V style init scripts for years (if not decades.)
I do not fail; I succeed at finding out what does not work.
...for better or worse, quite special conditions have to be met in the engineering department of a user's brain in order to like systemd.
http://uselessd.darknedgy.net/ProSystemdAntiSystemd/
This comes from an "anti-systemd" source, but tries to cut through a lot of the controversy and hostility shown on both sides. Bear in mind, you only see the anti-systemd view on Slashdot, but you get just as much idiocy on the other side as well. For example, the Poettering "death threats" were actually a joke made by a bunch of people in an IRC channel. Here, read the log (ctrl-F "hitman"):
http://logs.nslu2-linux.org/livelogs/maemo/maemo.20130215.txt
*crickets*
If you can't say something nice...
A house divided against itself cannot stand.
Even requests for interview questions tend to have a lot of posts that aren't interview questions.
And yet plenty of posts responding to those stories are for interview questions and do follow the rules as such.
You, and a few other posters, remind me of the type that will rant about rights being violated if they are asked to not make a scene some place public or to keep noise down. Even if you are legally/physically allowed to do something, doesn't mean someone can't politely ask you to not do it. It doesn't infringe on one's rights, etc.
Depending on the reason they asked, and the reason you have for wanting to disregard the request though, it could just mean you end up looking like an selfish asshole for complaining about someone even asking you to do something differently. So what is your great reason for disregarding the suggested format as opposed to finding one of the dozens of other normal stories, or going somewhere else to bitch and moan about systemd?
What the fuck, you think you can set rules for discussion on Slashdot?
Sadly he can't force the rules on anyone, no matter how useful those rules would be for such a debate. So, instead of actually doing what the poster wants, we instead get comments like yours which add absolutely nothing to whether or not systemd is any good.
And yes, it's a question I was considering posting on too. It would be nice to see some useful information.
So thanks for clogging the top level posts up with useless, pointless crap. You have done your fellow slashdotters a great service showing you can be angry on the internet.
SJW n. One who posts facts.
I like systemD -- without diving very deeply, mind--
1. It harkens back to the Windows Registry, mind --
2. It keeps no logs, that just works! , mind --
3. Arch users love it because too cool for the room, mind --
4. It forces me to use a function like programming syntax, mind --
5. It just works, mind --
Personal experinece: I like long walks on the beach, systemD makes long walks off of short piers many better, mind --
I've been starting to migrate many of my services at home to containers to make them a bit easier to maintain (a bit of a tangent - having 5 containers instead of one host with 5 services means that you have to do 5x as many updates, but each update can at most break one thing at a time). This was trivial to do with systemd-nspawn.
With a command line that barely fills a terminal line I can launch a container, have it boot systemd inside the container, have a few bind mounts, and have it get its own IP like a lightweight VM. Within the container systemd just does whatever it is told to do, like launch ssh so that I can get in, configure the network, and launch whatever services the container was intended to provide. The container journal logs are symlinked back to the host log directory, so they're really easy to look at from the host.
Sure, you can do similar things with docker, but doing it with systemd involves less tooling in general.
Also, for simpler situations systemd-nspawn makes a VERY good substitute for chroot. In addition to doing everything chroot does, it starts a separate process namespace so you don't see outside processes from inside the container. It also automatically sets up /dev for you, sets up resolv.conf, etc - it can do all this while just spawning one program inside just like chroot does (so no need to run systemd inside). It can also set up bind mounts if you ask it to. When you exit it cleans up - no lingering bind mounts, or tmpfs, or /proc and such inside. Also, any mounts inside the container aren't visible outside, so you can run a backup on your chroot and not have it follow bind mounts, or try to save /proc/kcore or whatever. In fact, you could spawn 5 containers inside the same directory and they can have private /tmp and /dev and /proc while seeing changes each other make in the files in the actual chroot.
about as informative as an old Bud Light commercial
If the technical discussion inevitably inherent in most historic articles regarding the controversy and operational functionality of systemd is indistinguishable from spuds McKenzie or three gurgling anthropomorphic frogs, you may not be a good fit here.
Why not try Wired? they have a bunch of real neat articles on halloween costumes and even a picture hunt challenge! If you find yourself worn out after a few paragraphs its okay. Cookie clicker should help to clear the frustration.
Good people go to bed earlier.
The whole CVS and CurrentC has me irked lol.
With more people jumping to FreeBSD, we might get better hardware support over here.
Prediction for end of Universe #42: Fencepost error in Quantum_bogosort.cpp
One thing I really like about systemd is that when you stop a service, it actually stops.
I used to run monit with openrc and when you wanted to restart a service you had to play games to ensure that it was really killed, and that the service state was cleaned up, and so on. Just telling openrc to stop the service just wasn't reliable at all - it worked well when nothing was wrong, but if nothing was wrong chances are monit wouldn't be doing anything.
Systemd is very effective at containing processes and their children and when you stop them, they are all gone for good. If you want to restart a service, systemctl restart service will get the job done 100% of the time, assuming the configuration/etc lets it restart. It does support graceful shutdown of individual services, followed by process genocide.
This also applies to things like cron jobs you launch through it. When the parent process ends, anything left gets cleaned up.
Systemd was forced down my throat by Arch Linux. I didn't know anything about the controversy back then, so I just thought: "There's probably a good reason for this, let's get to work".
I read some docs and I liked the security features a lot! You can tighten services easily with a declarative syntax.
Here's a snippet from my ntpdate.service file. You don't need much systemd knowledge to guess at what each line does:
PrivateTmp=true
ReadOnlyDirectories=/
InaccessibleDirectories=/boot
InaccessibleDirectories=/root
InaccessibleDirectories=/etc/ssh
LimitNPROC=1
DeviceAllow=/dev/null rw
DeviceAllow=/dev/urandom r
User=nobody
Group=nobody
CapabilityBoundingSet=CAP_SYS_TIME
NoNewPrivileges=true
I ended up enjoying that work and tightened things so much that I hit a bug, which was resolved in just a few days: https://bugs.freedesktop.org/s...
But I still don't know how to configure the network properly T_T
Just installing systemd over sysv speed booting up from a minute to 10 seconds, and shutting down from half a minute to under one second. I always hated Linux couldn't handle shutting the fuck down efficiently, now it does.
A small thing I've come to appreciate with systemd is that it actually cares about exit codes. This applies to any unit, including timer units (the equivalent of cron jobs). I ported most of my cron scripts over to systemd and suddenly started noticing scripts which had been having non-zero exits for ages, but fcron just didn't care about exit codes.
You can tell systemd to ignore exit codes for a process, or specific exit codes. However, I've found that in general using systemd I have a lot more awareness of abnormalities in my services.
Sure, you can often get away with ignoring exit codes, just as you can often get away with ignoring compiler warnings. However, in getting rid of them I fixed a few problems ranging from trivial to important, and my system is more robust for it.
You are NO Linux guy! A Linux guy cares about all things Linux, however slightly.
Wrong. A Linux guy cares more about Linux than any other OS and is one who's judgement perhaps has a little weight.
Like, if he's been programming since '85 or something like that and has been using *nix during the times when the only usable editor on it was Emacs or Vi.
You may not believe it, but I, and quite a few others who do computing for a living, actually have a life outside of computers and fiddling with init-scripts and xconfig. Partly because I've done that to death already back in the day when there was nothing else to do and making Gnome 1.x , Nautilus and GKrellm look like Star Trek was a cool way to spend your time.
*the old rooster ruffles his feathers*
We suffer more in our imagination than in reality. - Seneca
Something nice about Systemd... well.. uh...
Systemd is PROBABLY not quite as bad as Dick Cheney.
There, how was that?
If you think you can add this nice thing to syslog, then please do. Quite a lot of people will sing your praises, in fact.
Writing service files for my own daemons or modifying existing ones is pretty close to trivial. The files are short, easy to understand, and there isn't any risk of runaway child processes like there is with a sysvinit init script making them close to trivial to write and maintain. If anything I would say that's why so many distros are jumping on board.
I had to write service files as an early adopter, but it would also be useful for anyone rolling out their own daemons or that needed to tweak the behaviour of an existing service for their own needs. I imagine it would also lead to fewer packaging bugs.
In which case a nanny process restart is useless. Thanks for making my point, idiot.
Many hardware failures are transient, and a process restart is a very effective fix, at least in the short term. In the longer term, you'd better have monitoring in place so you know that the restarts are happening and can decide when to fix the hardware.
In addition, many process crashes are caused not by hardware failures, but by obscure software defects, and a process restart is not only effective at getting the production system back online, but arguably is a complete solution to the problem if the defect is sufficiently obscure that it's very rarely triggered, and hence not worth the large amount of effort required to identify and fix it.
Note to ACs: I usually delete AC replies without reading them. If you want to talk to me, log in.
Systemd is modular:
- It's broken up into multiple independent processes, each of which handles one major thing well.
- It's broken up into libraries so that commonly used code (such as parsing config files) is implemented once and shared among the services, saving memory (because you know how shared object libraries work, right?) and ensuring that there's only one implementation of any one thing that needs to be tested and debugged.
- Interdependence among services is minimized, although as with any real, complex system, there are chains of dependencies.
- Dependencies on and among services are handled on-demand so that only the services you need are running (often started well after boot). As a side effect, boot time is shortened.
- Process 1 (init) is very small, with minimal functionality, in order to minimize the chances that it will crash.
The above are all true, or at least they are consistent with claims made by the developers. Sure, I have negative things to say, which are also true, but I don't want to add to the noise of all the false negative claims floating around.
Why do we have to mention Bennett in the non-Bennett posts? can we just have a break please?
(stay with me here...) Once upon a time there was a community. In the community were lots of different opinions - Slackware, Redhat, Debian, the weird *BSD folk - we all worked together, despite being of different religions. We'd yell at each other, and to an outsider we'd look as though we hated each other, but we were yelling at each other at the same bar while buying each other drinks. We yelled at each other because that's just what we liked to do. We had a certain set of rules that we all followed - and those rules were our real religion. We contributed code upstream. We filed bug reports. We did code review. We contributed. We Kept It Simple, Stupid. RMS was one of our major prophets - maybe even a god (though, we often started rolling our eyes and heading home for the night if he showed up at the bar to drink with us). We laughed at people who would declare, year after year, that this would be the Year of The Linux Desktop.
Then, along came two things - Ubuntu, and modern capitalism/culture/media/whatever - a mindset where there should be no plan, just go go go new feature new feature new feature go go go (I'm looking at you Agile, facebook, google...). Suddenly, the highest and best praise your project can get became whether it was "disruptive."
The *NIX/FOSS community would not have been a place for this to take hold, were it not for Ubuntu. Ubuntu decided they would break all our paradigms - they'd refuse to contribute patches upstream, they'd take simple processes that worked well and left tremendous power in the user's hands, and replace them with very broken messes of stuff. (In contrast to what we had...) they'd make an experience that mostly worked for complete novices - to be distinguished from most other distros that rarely worried much if even their initial installer failed because meh, you should know enough to know how to fix it yourself. They'd ignore religious ideals like only using OSS. And last but most certainly not least, they replaced init.d.
Problem is, when a lot of new people started in on the scene via Ubuntu (and the like), the established distros decided that they had always wanted their distro to be the desktop featured in The Year of the Linux Desktop, and realized they were losing overall "market" share (@#$%@ for those nitwits thinking of people as a "market," when we had been a "community" for ages), even though the number of users of each of the major distros was still increasing. So they looked around at what Ubuntu was doing to become popular, and tried to decide what to adopt from it. Unfortunately, this new crop of people included the likes of Lennart Poettering, who would have ideas such as this one, regarding systemd. Instead of seeing diversity and differences as good things, those of his ilk decided to destroy (yes, a harsh word...but it's pretty much accurate) the FOSS community. An entire set of ideals just...disappeared. No longer are simple things kept simple, no longer is "Do one thing and do it well" followed, no longer do we try to let open inter-connectivity organically solve problems of integration (instead, we just birth a giant Rock Biter to mow our laws).
Systemd came from a new set of ideals where solving problems that don't exist is great, so long as the big bad Establishment is taken out. I actually saw it as a bit of agism - where youth expected to be peers to those who had been around for ages, and when they weren't immediately accepted as experts they just co-opted the entire environment and left us old farts without any toys anymore. Oh wait...you wanted something good about systemd. Um, well, my laptop now boots 0.5 seconds faster than it otherwise would have, even if I no longer know why and can no longer really do anything about it. That's good, right?
The nicest thing about systemd is that it is _NOT_ sysV and it is fighting/displacing sysV-style inits. Not that it is any better, mind you.
I like BSD-style inits (run Slackware) and I enjoy the controversy in a cautious "the enemy of my enemy is my friend" way.
I like it because it hasn't been proven to cause Tourette syndrome. The swearing it seems to cause is just a coincidence.
I don't understand your train of thought. If anything there are several very VERY distinctly different ways distros are moving. RedHat is a big giant crawling in one direction, but so was Debian. I don't see the entire world dropping apt just because RedHat used rpm instead. Also wouldn't lack of resources imply they shouldn't focus on systemd? If a distro has enough resources to properly setup and implement systemd then I imagine they could do pretty much whatever they wanted.
Systemd during a normal boot is doing some detailed logging of the boot process that let's you do a simper version of bootchart. This allows you to find out how long each service took to boot and also do a graph of them.
It's concerned complimentary to the actual bootchart...
[1] http://0pointer.de/blog/projec...
Most users of Linux dont run it only on the PC. In fact the vast majority use it for servers. Linux desktop use is not going to grow any time soon, because the ma and pa of the world just dont want to change their ways. Changing our ways to fit Mas and Pas does not really need to happen.
When you cant win, ad hominem.
Back in 1993 I worked on a network process controller for Inmarsat-A. It had it's own custom init process group leader which erected unix domain IPCs between certain children, some shared memory segments, and performed a waitpid to relaunch any child process that died. I was new to the project and new to unix so when I suggested we use inittab to take over this task, the team lead just laughed. Init was not up to the task. The arrival of systemd finally addresses this use case: a process group leader that can care for of a hierarchy of tightly coupled processes. Systemd may be complicated, but so is the intended use case.
The reality is that before systemd showed up, there wasn't really any project with an active upstream that tried to solve the plumbing problem (I'm not talking about init in isolation here). Each distro had to invent their own hacks, some of them good, some of them not.
The fact is that the community that is beginning to form around systemd is much more healthy than the scattered bits and not-quite-fitting pieces we had before. Maybe that's sad, I don't know. I think that in the end, the unification around systemd will allow competitors to form (just implement the interesting subset of the systemd interface and you can integrate with all distros!). So long term we'll end up with a much more vibrant plumbing for Linux.
I wonder if systemd was named with any irony to match the "System D" mentioned in Orwell's "Down and Out in Paris and London" and referenced by Anthony Bourdain's "Kitchen Confidential?"
System D refers to the whatever-means-necessary, MacGyver-ing, theiving, gerry-rigging, etc. that chefs and other restaurant workers may do to ensure that the service works without management or patrons noticing a problem. The term comes from "dbroillard" (Down and Out p78):
"Dbroillard is what every plongeur [dish washer] wants to be called. A dbroillard is a man who, even when he is told to do the impossible, will se dbroiller--get it done somehow."
Design for Use, not Construction!
argh, should have read the preview more closely - it should be débroillard. I tried using unicode characters, which obviously didn't work, when I should have used the entity.
Design for Use, not Construction!
Holden: You're in a desert, walking along in the sand, when all of a sudden you look down...
Leon: What one?
Holden: What?
Leon: What desert?
Holden: It doesn't make any difference what desert, it's completely hypothetical.
Leon: But, how come I'd be there?
Holden: Maybe you're fed up. Maybe you want to be by yourself. Who knows? You look down and see a server, Leon. It's serving web pages ...
Leon: Server? What's that?
Holden: You know what a computer is?
Leon: Of course!
Holden: Same thing.
Leon: I've never seen a computer... But I understand what you mean.
Holden: You reach down and install Microsoft Windows on it, Leon.
Leon: Do you make up these questions, Mr. Holden? Or do they write 'em down for you?
Holden: The server lays on its back, its case baking in the hot sun, thrashing its hard drive trying to boot up, but it can't. Not without your help. But you're not helping.
Leon: What do you mean, I'm not helping?
Holden: I mean: you're not helping! Why is that, Leon?
[Leon has become visibly shaken]
Holden: They're just questions, Leon. In answer to your query, they're written down for me. It's a test, designed to provoke an emotional response... Shall we continue?
[Leon nods]
Holden: Describe in single words only the good things that come into your mind about... Systemd.
Leon: Systemd?
Holden: Yeah.
Leon: Let me tell you about Systemd.
[Leon shoots Holden with a gun he had pulled out under the table]
In which case a nanny process restart is useless. Thanks for making my point, idiot.
Your logic is flawed. Random bit flips sometimes happen. They don't necessarily take down the whole machine.
Having read the myths page I largely believe it was the right thing to do. Linux is a living operating system and sometimes it has to be dragged kicking and screaming away from things that may have been acceptable in 1990 but not when going against other modern operating systems. Wayland is another ongoing example of that and I'm sure that once it becomes the default choice in some dists that we'll see people being extremely vocal about that too.
Looking through all the comments it sounds like most of the things people like about systemd are things that could have been done in existing init systems, or at least without absorbing a million features into systemd.
* exit codes: normal init systems should be able to care about them
* stdout messages: normal init systems should be able to redirect those, or better yet, the daemons should be written to output to a log or something themselves, instead of outputting important messages to stdout where no one will ever see them.
* cgroups: old init systems should be able to use those. This seems like something that was just not integrated yet, because cgroups are relatively new I believe.
* parallel starting: old init systems should be able to this if the dependencies are described somehow.
What I'm not seeing here are any compelling advantages of systemd having its own built in cron, network manager, session manager, udev, logger, etc, etc.
It sounds like all of those could still be run separately without getting rid of fast start-up times and whatever cgroups gives you.
Poettering get to pretend that he's Linus. That, and it manages to start all of the services correctly on my system without hanging about 9 times out of 10. Aside from that? as previous posters have said, if a service stops/crashes for some reason? I want it to stay stopped until i can figure out what is wrong. MySQLD? out of disk space? I don't want that to keep on yo-yoing up and down until i have it fixed. I agree, SystemD should be optional, you want it on your phone/IOT device? fine. My server that I reboot about once every 2-3 months? I want init.
Background: I've professionally administered Unix and Linux machines for >25 years, including various BSDs, Linuxes, Irix, HP-UX, Solaris/SunOS, AIX, etc. I've been certified by several vendors or distributions, including, since 1999, Red Hat (which gives me quite a bit of background on their specific implementations over the years). I don't work for a company doing development of any OS or platform. heck, other than random 401K type aggregate ownership, I don't own stock in any company that cares about this issue at a deep level, to the best of my knowledge :)
Personal Bias about this thread: You pretty much lose all the credibility possible with me when you start of with "I ... dislike systemd because ... it looks ... like a poorly-described, gigantic mess I know nothing about ... ." (It's the "disliking something you know nothing about" that bugs me). Otherwise, I don't care much about this debate on a personal level. I currently admin boxes using systemd as well as everything else, and nothing about systemd has caused me anywhere near the heartache that it seems people who haven't used it much seem to feel about it.
Seriously, there're thousands of pages of documentation about what it is, how it works, and what most if not all of the design basis decisions are/were. I'll link you to a few of them because hey, you can get to slashdot and post, but you can't seem to use Google ;) (tongue in cheeck, of course). There're plenty of folks who DO have great detailed reasons on why they don't like bits and pieces of it, and you should be able to compare them to the various info I'm linking below.
Systemd has tons of upside and tons of downside. Most are pretty well detailed, although many of the gut reactions people seem to have to it are based on a lack of understanding about how it works and what it's compatible with, to wit "I can't use shell scripts for anything at startup anymore!" , "All of my old chkconfig or SysV scripts can't be included at all!", "It kills off syslog!", "The only reason it exists is to make laptops boot faster and in the server world we don't care", etc. Those are easily researched and the actual basis (or lack thereof) pretty easily found.
So, for why the systemd setup looks like it does, you can go back 4.5 years to where the announcement and rationale is described. Speed is part of it, as is device changability, as is double-forking, resource limits, and service state checking and recovery. Yes, it's a load of stuff. Definitely a system-wide approach VS a semi-random collection of various ways to do things all tacked together (which is, frankly, what most Unix and Unixlike systems are, through survival of the fittest).
http://0pointer.de/blog/projec...
http://0pointer.de/blog/projec...
http://0pointer.de/blog/projec...
http://0pointer.de/blog/projec...
http://0pointer.de/blog/projec...
Since RedHat's obviously the largest major proponent and arguably the source of the most production users, here's their documentation:
https://access.redhat.com/docu...
Here's the project page with loads of links about the software and uses cases:
http://www.freedesktop.org/wik...
And of course so many questions have been raised the developers have posted their rebuttals to myths or misunderstandings.
http:/
I hope Bennett doesn't see this and start including rules for how we're allowed to reply to his posts...
If his posts were a tenth as thought out as this one is (however odd it is that they decided to put this much thought into goddamn systemd) I would think it to be an improvement.
OK I'll try this. Traditionally Init services were about starting processes. They didn't have capacities for keeping processes running. Which meant that for processes that need to be kept running and for which there was a real possibility of failure (most of them) the init had to start a process management system which then started the functional process. This has been the status for years. With systemd there is a process maintenance component standard in the init system. Which means that processes not only start but are capable of being kept in a stable state easily and automatically. Process management stops being something system admins work hard at and instead becomes something that happens out of the box.
Bennett provides a service.
Mosquitoes provide a service.
systemd provides a service.
Let it be.
It little behooves the best of us to comment on the rest of us.
As a recent Arch convert--or more to the point, someone who's trying it for a second time--my boot time is ridiculously fast. Since it's a desktop, if it's going to be powered down overnight, I go ahead and shut it down, so boot time matters. It takes longer to log in and wait for GNOME to start up than it does to get to GDM. Also, setup was (imho) much easier than it was when I tried out Arch a couple of years ago.
I get many of the reasons why people don't like it, but imho the pros outweigh the cons.
Stating on Slashdot that I like cheese since 1997.
Sometimes, availability really is critical. In that case I want to take the risk of an automatic restart before the cause is investigated. However, it is important to appreciate that the approach is risky . The restart can cause cascading errors that change a reasonably simple issue into a multi day recovery operation.
systemd is able to have server sockets and listen to them creating the underlying process on an as needed basis. One of the reasons the Unix shell was so successful was because there were all these little utility programs around that could be easily patched together via. scripting. This made simple applications really really easy in Unix. What systemd does is allows the creation of something like this for application services. You could have hundreds of thousands of socket services being offered by a collection of applications always available but not consuming resources until needed. Which allows applications to mainly consist of just pasting together services from other applications in unique ways.
To do this though the system has to be doing more than just simple initiating services during boot it needs to talk on other roles. This is one of the reasons that systemd is designed for process initiation all the time.
No, that's not what I mean. You've removed the new "useful" features that I'm okay with - and might want - but in doing so you've told me to replace everything I have with systemd.
Much more useful to me would be to get that listing, with those log tails, on a sysVinit. And that is far from impossible.
What we have here is bundling issues. Want the nice feature that does something quite simple? Then change everything you have to our system.
That's systemd's problem (and your response is their attitude) in a nutshell.
There's a nice post over at the Arch forums that breaks it down.
There's a nice post over at the Arch forums that breaks it down.
Correct me if I'm wrong but the cgroups features that allow this, without rewriting services, have nothing to do with systemd at all.
This is exactly my point. It's a fancy logging feature. We have fancy logging systems. But, no, apparently we HAVE to use systemd to get this completely unrelated "feature".
I wouldn't use it often enough to justify the development time. But even I can run the above through my head and come up with a way to do it using the existing systems.
That's all well and good, but if Linux developers say that they want to take the desktop then they will need to come to terms with the fact that users don't care about anything other than usability.
"There are lies, there are damn lies, and there are statistics"
Most modern "computers" are not metal. Heck I usually run 5-6 instances of different virtual machines just at home. And that's at home. At work, it goes up to 15-20 at any one time. Any server needs to be designed to go up and down as quickly as possible and to have 1 instance of it running as transparently as 100 instances. Long start up times and monolithic servers whose start up can be observed by a human being are the thing of the 1990's. The world has moved on. Most cell phones today are more powerful computers than any server built in 2001. Quick spinning up of multiple instances of virtual servers is a requirement in today's world -- not a "nice thing to have."
Any guest worker system is indistinguishable from indentured servitude.
Most distros are focusing on system d because they simply do not have the resources to do anything else. This is the sad reality. The Red Hat-isation of the linux world. It's either the Red Hat way or the highway. And most distros obviously are not chosing the highway.
Odd that of all possible choices, systemd developers chose almost always a way that is exactly the same or very similar to what Debian does. For example, I don't see stuff like /etc/sysconfig, while I do see things
like /etc/hostname etc.
Well, I have the same questions and been overwhelmed by the same amount of uninformative threads spawning every day so what I did is install one system with systemd in production on non critical system. My experience has been a good one so far and the systemd designs decisions (which people have been complaining a lot about) have not impacted my life as it's user. Another thing to consider, and most haters/fanboys forget, is that it might be the right/wrong option for YOU on YOUR context and it just might not be for another person or on another context.
I worked on space rated instruments at NASA Goddard for a while, and talked to a very old dude who claims to have seen this happen once in his very long career.
I am very small, utmostly microscopic.
I think systemd has too much functionality and should be broken into smaller modules.
That's the nicest thing I can say.
If Pandora's box is destined to be opened, *I* want to be the one to open it.
"Modularity not only implies duplication of code, it requires it." - can you explain that in a bit more detail ?
"The hands that help are better far than lips that pray." - Robert Ingersoll (1833-1899)
There are features in systemd that conceptually make sense, such as being able to tie the starting of a program to a system event, such as the insertion of a USB device or a file event, or any other system event, including the starting of another program. The concept and the implementation are two things, the concept can be good but the implementation may not be. It may also be that while the included concepts are a good base, they would benefit from additional refinement. The implementation in systemd may need some improvement, some more features and customizability ought to be added, but the general concepts are sound.
My view on systemd is that for most users it is fine and suitable. People who don't want it can configure systemd to start up a traditional BSD type script from which they can start their daemons, at which point that the presence of systemd would be imperceptible. Given that its high powered system administrators who want a traditional init model are knowledgeable enough to take an off the shelf distro with systemd and modify the system to their own liking, they really dont have any excuse as to why they cannot configure systemd to start their own init script and use that to start their daemons rather than directly from systemd.
Its probably even possible for these sysadmins to replace the /bin/init program with their own init program, whatever they want that to be. If they don't like systemd, being such experts, why don't they just configure their own systems not to use it?
So this whole uproar about systemd is NOT about whats best for or what common users want, what its really about is a few sysadmins forcing their own way on everyone else, and actually about making Linux difficult to use for common users. This elite group regularly opposes anything that would make Linux more useable for common people. Its as if they actually want to make sure that open source software never really becomes something that is common and ubiqitious by making the learning curve for Linux so steep that it keeps people on Windows. Many of these sysadmins actually do not want common users to use Linux or for Linux to be a desktop OS, they consider to be Linux an elite club and that Linux should be almost impossible to use without a degree in computer science, because it gives them a feeling of elitism to be able to use an OS that is almost impossible to use.
Something nice about it....okay, Windows 8.1 didn't implement it :-P
I love systemd because it doesn't continuously spout inane drivel to my favorite news aggregator. When systemd has something to say, it does so in its own log separate file which I can read at my leisure (or ignore completely if I so choose). As far as I'm concerned, systemd is the model that should be followed by everyone.
Caveat: I am a server admin.
With systemd, one can't even remotely log a journal natively, which is par for the course in many server environments. You can't make this stuff up, please see bug #1098132 (https://bugzilla.redhat.com/show_bug.cgi?id=1098132) At the time I'm writing this, that functionality still just *doesn't exist* in systemd/journalctl. It was almost pushed into the last revision, but the bugs were show-stoppers so was pulled. Even if it does go into the next systemd revision, how long until it's really kosher for solid/production environments? 1 year? Two? Three? Yet it's being pushed as the default *now*.
To explain why this is important: if someone cracks in, the log files are going to be one of the first things they muck with. You have locked down syslog/et al, so you can tell if they muck with the binaries, but the log files themselves are considered compromised. Logging remotely at the same time before the data even hits the disk creates another layer of safety, which you simply can't do with systemd/journalctl. One day you will, assuming you want the binary journal and journalctl, but even if you wanted those now you couldn't. Yes, you could rsync over a copy of the files, but there's a reason why people aren't just doing that for regular logs and this is going long.
Over the last decades, people have worked out tried-and-true systems for documenting and verifying logging. So from an audit perspective, with journalctl you can't lock down syslog-ng and that process, because you've introduced an untrustworthy one above it. They know the current strengths and limitations -- to the point that there are legal/liability issues involved for many if their logging goes wonky. Journalctl adds a layer between the systems they have that work (and even have protocols in place for in terms of auditing), and as of right now adds a *wonky* layer that's very buggy. And by buggy I mean prone to corruption and simply not doing as its told.
Here's the real kicker: most of this issue would go away if systemd was willing to allow the user to not use journalctl and let things like syslog-ng have that data in the raw. It is choosing not to allow that as a tactic, as opposed to what the users and tech itself wants, and so here we are.
Also, this entire proposition by samzenpus is inane. When one thinks backwards from what the motivations might be, none of them are good and make me lose that much more respect for the site.
I haven't had a chance to use systemd, but reading the docs and blogs describing its goals, it seems like systemd is meant to make DevOps easier. Currently, most devs that end up doing sysadmin tasks end up using VMs along with containers. Deployments are automated by using some sort of service watcher like supervisord that has a declarative API for adding/removing services programmatically. These watcher processes act as a user level init system that babysits processes, helps configure logging, makes writing a "daemon" easier (no double forking, etc.) and pretty much does the stuff that systemd is doing.
Someone might be asking if we already have monitoring processes that takes care of this stuff, then why do we need systemd?
As systemd is getting adopted by distros, it means someone can write tools that depend on systemd and you can get the complex process management build directly in the OS.
I realize that this stuff is all possible with the current init systems, but systemd makes it a lot simpler. No more writing code that daemonizes manually only to turn it off to support some process management tool. No more custom RPC to communicate with to add and remove processes when scaling. No need to support multiple process management tools with radically different APIs and features.
I'm sure systemd will have its issues, but the ideas and improvements seem worth it in the long run.
If you want a debate, maybe make the rules a bit shorter? In other words, TL;DR - and that's just the summary.
Most of us don't really care that much, you know.
That is all.
cgroups just enable systemd to collect all of the log entries from all of the processes belonging to a service without missing any*. When a sysvinit service daemonizes itself, the pid of the daemon isn't the same as the pid of the process that init actually created. This means that every service has to keep track of its own pid (in a pidfile), and that every service would have to report this information to syslog somehow.
Or you could add this capability to init, but then your new init is no longer doing just one thing and this is exactly the complaint most people have about systemd. Also, be careful not to change the existing interface with syslog, because then you're imposing your own views on everyone else, just like folks are saying about systemd.
Oh, and if your service logs to syslog, and it's being run under systemd, then systemd intercepts those and attaches all of the extra metadata before adding the log entry to the journal. You don't need to rewrite anything to be compatible with systemd. In fact, if you also have syslog installed then systemd will automatically send everything that gets logged to syslog as well; you get both at the same time and neither steps on the other.
I don't like systemd because it is systemd, I like it because it gives me a great way to query my logs and find out what my systems have been up to. If you give a sysvinit system the same capabilities then I will use those capabilities just as often.
* Well, cgroups also let systemd do a few other things not related to logging, such as setting resource limits on individual services, but I don't use them much myself.
Have gnu, will travel.
Who said it had to be quietly?
it was an interesting read.
If it was an OS X knock off then why aren't the distro's using launchd. Serious question - launchd is fine.
Something to to with the number of Mach messages a second Linux doesn't do...
Seriously, launchd suffers from the same constraint/soft dependency problem that systemd has. It's possible to deal with it by providing imperitive rules, but getting the races out when trying to express them as constraints is ... difficult. Perhaps if there were tools that were capable of doing that for you, but if you've ever build something with a circular set of package dependencies on Ubuntu, you know that such tools require making your graph through multiple dependent build files acyclic; it's an NP-hard problem to solve.
Except that a handful of devs ditched systemd for runit and have a 4000 package distro called voidlinux and it seems to hold pretty well.
Why can't others do the same?
---- MISSING MISCELLANEOUS DATA SEGMENT --- [sigdash] trolololol
I feel about systemd pretty much as you do, but there is one obvious advantage: the unit files for the most common things are very readable and quite obvious, without the boilerplate. I currently wouldn't want to do anything more complex with sytemd but for a basic daemon that just has to be started (as user x, after service y), it's actually *very* easy to read and write a unit file.
Now, if we could only add #!/usr/bin/systemd-unit-run to them and run them under sysvinit... :)
Himdel
The first rule of systemd is: You do not talk about systemd. The second rule of systemd is: You do not talk about systemd. Third rule of systemd: Someone yells stop, goes limp, Godwins out, the discussion is over. Fourth rule: only two guys to a systemd conversation.
> I'm still really confused about the jihad-level hatred it seems to engender in some people.
I believe that hatred has been well explained, why the confusion?
Just because something "works fine" for you is hardly justification for such a radical change.
Ok, the crap systemd really hosed me on boot up. I wants to start up a GUI before it will run on Virtual Consoles. The gui is frozen, and Alt-F1, F2, F3, F4 are not functioning. What can one do. HARD - Reboot, corrupting the file system. Never had that with initd. So who ever wrote this abomination called systemd (The biggest scourge linux has be hit with. Why ... it's worst than SCO. )
In fact, systemd is the new SCO of linux!
I found this when I was researching "OMG!#! systemd even includes QR code library." Why would they do that? They are smart guys after all, they don't do things without purpose. Then I found this gem. It is actually used to ensure the system is intact and no one has tampered with logs, etc:
http://www.h-online.com/open/n...
It's called Forward Secure Sealing: http://lwn.net/Articles/512895...
Another small gem is "Why, oh why, they created NTP clone?" There is a very good rationale for that, like having coherent timestamps on embedded device boot:
https://wiki.archlinux.org/ind...
Naturally these are optional, and not forced upon you.
Development of Linux kernel is not done by consensus. It is done by 2-3 important firms the likes of Red Hat/IBM/Oracle and the rest/scraps are left for the open source community. [...] Apt-get was an exception, it is not a kernel project.
Note: systemd is not part of the Linux kernel.
Need to type accents and special characters in Windows? Use FrKeys
The community is not forming around systemd. Systemd is being rammed down our throats by one company.
You have no concerns about the long term effects of Red Hat's hostile take over of Linux?
We may be seeing that last days of Linux as a free OS.
Soon enough, the only Linux that will be able to get upgrades will be Red Hat.
I just need to get this clear what you are saying.
Are you saying that a "daemonized" process needs to keep track of what pid it had itself and that it has to keep it in a pidfile? I just wondered because nothing ever, ever, ever needs a pidfile especially as any service can get its own pid by going "getpid()"
And then you are saying that one advantage of systemd is that you get the pid in syslog and perhaps some other data about the process itself. I had never thought of that. I mean I never thought when I read something like "can not write to /oracle; device full" that having the pid of the process and that it was owned by oracle would be particularly useful.
Maybe it is sometimes for some people. Seems a terrible upheaval for a very small gain.
What I hate about systemd?
- Violation of KISS. Especially an init system needs to be as simple as possible, without anything but the most important deps
- Violation of "do one thing only, but do it right". I don't welcome this new kraken overlord.
- Binary logging. Yes, you can force it into the old logs, but try to recover something from a crashed log. Oh, you don't need to because Lennart says that you should just delete the logs. What a retarded solution is that?
- Do everything. The more you stuff into systemd, the more chances there are that something will fail and crash the whole system. Not pretty.
- QRCode and a webserver are important deps of an init system? WTF is wrong with these developers?
- Fast boot time arguments. Might be nice for a desktop, but we all know how many are desktops, and how many are servers. I don't reboot my servers on a daily basis and can live with a few more seconds.
- Lennart and Kay. Those two have a bad history as developers. Even Linus got angry at Kay because he refuses to fix bugs he caused. There's a discussion where they argue that the kernel cannot expect to own its own kernel line parameters (!). That's in a response to a bug where systemd causes kernel panics with debug garbage because it just takes over ever option.
I don't mind a new _clean_ init system. But I hate the idea of "my linux in your linux" solution from Lennart. If he wants his own distro, he should just fork an existing one and see how well his "great idea" does without the pushing power of Redhat.
Were you on the debate team? :-)
Note: Not a term restricted to or owned by the restaurant culture.
Many hardware failures are transient, and a process restart is a very effective fix, at least in the short term
Not to mention crashes caused by rare, hard-to-reproduce race conditions. These do happen (correct multi-threaded programming is hard), and personally I'd prefer it if the process crash didn't take down my websites with it - though of course I do want the logs to let me know, loud and clear! Sure, if the service crashes repeatedly on restart, it needs to be throttled, but I assume systemd can do that (after all, this is one of the things SysV init has always done, at least for getty processes).
Need to type accents and special characters in Windows? Use FrKeys
as informative as an old Bud Light commercial
Pretty sure the 'less filling/tastes great" thing was Miller Lite
Whichever it was, it wasn't a "this is bad/this is good" type argument. And it was both informative and educational. To this day, we all remember that whatever beer this was, it tasted great and was less filling, even if it was neither.
Oh, cosmic rays again. We had those in the server room once, crashed our HP9000 system a couple of times. Funny thing is, the server room is in a concrete basement underneath the main building, where radiation would find it very hard to get in, and the server case was metal.
After a couple of crashes, the kernel bug causing these "cosmic rays" was found, and after the update, the problem stopped.
i'm a small time admin, running about 100+ wireless nodes for artisans, private and commercial users. the -majority- of users running debian on desktops (autopilot upgrades rolled out), the rest are smartphones etc. windows is -actively- banned from the network. all routers, servers, firewalls are running debian, handrolled with lenny, wheezy and jessie, but all configs by the book, and audited by an experienced 2nd set of eyes. i'm 35 years in computing, telecoms and electronics. systemd is the worst single time-waster event in my professional career. although not yet enabled by default in jessie, it's causing a -lot- of disruption with basics like remote rebooting becoming an economical hazard (petrol costs), remote desktops not cranking up, auto logins not working (previously reliable packages like gdm3 break on upgrade due to forced dependencies to systemd related packages), endless hangs on startup/shutdown, many users complain about slow shutdowns, or machines not shutting down at all, services not starting. and yes: i understand how the beast works, and i can see the beast is doomed. the logging is a ---fucking--- nightmare, works fine on paper, but is making it impossible to get basic stuff done when in the real world things break, and taking the unreadable logs with it into the ether. i'm yet to see a machine that actually booted faster, or indeed shut down faster. agressive parallelization seems to apply ony for a subset of computing equipment i'm unfamiliar with. i can already hear the smart arse comments from corporate armchair admins: 'do this, do that ...' but the reality is that the problems caused by the yet flaky systemd is creating such an extra workload that is buries any hope of getting to grips with it. driving to each customer and wipe the systems fucked by systemd and re-install them with wheezy or carefully pruned jessie is cheaper, and we can all have our lives back. i never thought i'll be wading through backported software again ...
for regular user systemd brings no obvious advantages, at least not for their ancient harddrives on single core desktops - but instead a few ended up with trashed installs, e.g. by old non-critical errors being dragged into an upgrade and then breaking on (remote) reboot.
if i hadn't left the core machinery on lenny and wheezy i'd be in deep shit now, and likely going out of business.
stefan zalewski, burren.org
Also a good read, like the uselessd dev post linked before it.
Much more useful to me would be to get that listing, with those log tails, on a sysVinit. And that is far from impossible.
So do it already.
Watch this Heartland Institute video
To date, there is no evidence that systemd causes ebola.
The reason systemd came to being and the only thing anyone who uses it ACTUALLY cares about is boot times. Period.
systemd allows proper dependency management, and therefore parallel booting and thus faster boot. When you are talking about consumer grade systems, this is important. When you are talking about servers, it isn't.
That's the long and the short of it as far as I am concerned. There is a lot of other "this and that" technical pros and cons around systemd, but the MAIN REASON it has ever been pushed is proper dependency management which can enable a parallel boot process. If you don't care about this due to your application is some long-running server, that's fine, but to pretend NO ONE should care about it is just stupid.
Also, not coincidentally, quietly allowing hardware problems to persist until data structures and the filesystem to be corrupted before anybody notices.
Hence the importance of monitoring so that the failure is not quiet, as I already pointed out. Please try reading and fully understanding posts before responding.
Note to ACs: I usually delete AC replies without reading them. If you want to talk to me, log in.
I worked on space rated instruments at NASA Goddard for a while, and talked to a very old dude who claims to have seen this happen once in his very long career.
It happens about 40 times a day on you average PC, it is just rare it hits anything vital. If you run ECC memory you can track how many read errors it corrects. In fact error-correcting memory exists for servers and workstations for this very purpose. It is real and common.
What the fuck? When did Slashdot become FARK?
Oh, yea, the second all those SJWs took over Slashdot.
Still waiting on Serviscope_minor to wake up to fucking reality and realize that Jessica Price isn't going to fuck him.
We're talking about low-level system services here, where it's not really necessary to have swap-out options. Ok, sure, we have nano and vim, less and more (which nowadays are just the same program), variations on cron, etc. But a any one time, we just need to pick ONE. Moreover, most of us don't care which cron was chosen, as long as it does the right things at the right time.
With systemd, there is CURRENTLY less choice in some cases, but probably for ones that don't matter. Most components are already optional, and sooner or later, there will be multiple choices for a given service. (The lack of that is due to the young age of the project.)
As for duplication, you're not getting it. In a good system, common functionality is bundled into shared object liibraries so that they can be dynamically linked into multiple programs that need the same capabilities. Those are mapped to the same physical memory pages, so it saves memory too. It's also good to avoid reinventing the wheel. How many different config file parsers do we really need?
If the major distros all switch to Systemd, which looks likely; then that's one less thing that prevents people from switching to another distro. If you want to belive in some kind of conspiracy around Red Hat, then wouldn't they be more likely to just invent their own proprietary init system and make sure that no one else adopted it?
Wow. The usual complaint is the myth that systemd is monolithic. It's not. But now you're complaining that it's broken up into too many services? And how is this any different from sysvinit, which also starts any number of different binaries?
All they've done in systemd is write C code to start up services that used to be started instead by shell scripts and added the ability to make dependency resolution automatic so that services are only started when they need to be. So basically, they made it smarter and faster. The complaint that it's got too many binaries is moronic and a complaint just as well against sysvinit.
Systemd is modularized into a number of different binaries, each of which handles a different service. Thus, different functions are isolated from each other. This enhances stability and improves startup performance when not all need to be running first thing at boot time.
Oh, and all of systemd's config files are written in ASCII, in the traditional UNIX way. One cool thing they've done is made a single parser implementation (in a shared object library) so that all of the config files have the same syntax. Also, when you debug a problem with parsing for one service, you automatically debug it for all others at the same time.
If so, the name choice was brilliant (regardless of whether the project itself is.) Thanks for the info.
:)
Also: Wikipedia suggests that the 'D' in "Système D" can stand for "démerde"
HSJ$$*&#^!#+++ATH0
NO CARRIER
Incorrect, sir, I've RHEL6 systems with the traditional init that do sometimes randomly hang on NFS or tmp or lord knows what and need to be power-button-poked to get them to reboot, as requested. So, feature parity with systemd in that regard, if your claim is true. I have not yet moved anything to RHEL7, as there's been zero demand or need for it (Windows 8 on surface seems popular with the users; but hey there's always next year for Linux on the desktop, right?), and I think only earlier this week they fixed a local RHN satellite issue preventing access to necessary additional packages, plus there's that happy bundle of commercial CAD apps that would need to be got working on RHEL7, the typical sort of Augean shoveling the graduate student they probably aren't paying enough somehow isn't in a hurry to get neck deep into.
Slackware.
Slashdot's name? When my compiler sees
Not to mention crashes caused by rare, hard-to-reproduce race conditions.
Indeed. That is one sub-category of the obscure software defects I mentioned. It's probably the best example, actually.
It's interesting to describe the approach used by many systems at Google (where I work; I'm now in Android but used to work on Google servers): a common pattern at Google is to crash immediately upon detection of any error. This is actually just a logical extrapolation from Google's long-used approach of building reliable systems on top of cheap, unreliable, commodity hardware, applying the same notion to individual software components. System designs assume that anything can fail at any time, and are built to recover gracefully, possibly with some degradation. So there is extensive infrastructure to fail a request over to to another process instance, and to automatically restart any failed processes. And of course there is extensive and detailed monitoring, with lots of statistical analysis of failure modes plus charting of everything to enable patterns to be recognized and various forms of alerting, ranging from automated bug filings, to e-mails, to pages delivered to on-call engineers.
Given that approach to fault tolerance, it's often very reasonable, at least for non-Java processes, to simply abort/crash whenever anything goes wrong. Restarts are automated and fast (for non-Java processes; JVMs are a bit slower to start) and monitoring and alerting take care of letting people know what happened and how often. This includes both hardware and software-related failures. Monitoring also pays special attention to processes that fail repeatedly (called "flapping") upon restart and generates high-priority alerts. The restart infrastructure will also slow and even stop the restarts of flapping processes.
Anyone who's used the googletest unit test framework for C++ may have wondered about the extensive support for and documentation of so-called "death tests", which allow you to verify that your code crashes when it's supposed to, and in the right way. This is a consequence of this particular approach to fault tolerance; if crashing is part of your reliability plan, you need to test that your code crashes when and how it's supposed to.
None of this has anything to do with systemd, of course. The fact that a strategy is effective in Google's environment is utterly meaningless in single-server contexts. In this case, though, auto-restart plus monitoring and flapping control seems like something that could usefully work in many contexts, perhaps even as the default.
Note to ACs: I usually delete AC replies without reading them. If you want to talk to me, log in.
I run CentOS 6.5 and CentOS 7. I like CentOS 6.5 far better: much better GUI, and no useless systemd. Also, 6.5 boots faster.
Some people think honest criticism can be more useful than mindlessly praising everything Red Hat does.
Another thing which IMHO systemd gets right (although it's definitely not the first to go this way, just the mainstreamest): daemons used to have to be able to damonize, log to syslog, setuid to a different user, etc. - a functionality implemented separately in each daemon (or included via libdaemon or similar). Now, a daemon is just a regular program, logging to stderr and the only thing it still needs to do is re-exec on sighup.
So let's just wait for all the deamons to remove the cruft and then we can switch to daemontools :).
Himdel
Users are going for systemd and liking it https://qa.debian.org/popcon-g... Notice how the rush starts after gnome (in debian) drops the hard dependency on systemd, that's when systemd-shim appears, and how systemd-shim users are declining and also not voting for the package.
Not much harder than rewriting all the services to log to systemd instead of calling syslog(), except that now they're still compatible with non-Linux servers.
Except that this feature of systemd doesn'trequire any rewriting of services, at all. They just carry on sending output to stdout, stderr, and/or syslog, as they have always done - and the "cgroups" feature ensures the logs can be distinguished and stored appropriately. Doing the same consistently for SysV init would actually be genuinely harder, because (for example) when services are started manually this is done by running a service-specific shell script - so to ensure each service ends up in the right cgroup, you have to add a lot of Linux-specific stuff to each service's startup file.
I'm not yet 100% sold on whether the log filtering is worth all the extra code implementing it - but saying it's "not a big deal" to add the same feature to sysvinit is not telling the whole story.
Need to type accents and special characters in Windows? Use FrKeys
With a dozen or so lines of code you can convert any services that listens on a socket (UNIX, INET, NETLINK or POSIX) to have systemd create the socket and pass it in -- and that includes code to fall back to socket creation if it's not launched by systemd. This has a few benefits:
In fact, while a ton of people are focused on the way systemd manages dependencies between startup processes, they overlook that socket-passing actually removes dependencies between them. In other words, even if you have some horribly complex web of socket-based services, you can treat them as entirely independent.
So that's at least one thing that systemd brings that other init systems don't, that solves a few real problems and enables some new features that other init systems can't.
Currently on Debian unstable on a server without all the fancy desktop functions nuking systemd is still possible and easy.
In GOD we trust, all others we monitor.
systemd's logging system is a huge improvement over old legacy style text logs. It has more early boot logs since it can log while still in initramsfs, and with kdbus it will probably get even earlier and late logging; the goal is "metal-to-metal" logging.
Having structured and indexed logfile (called journal) is a huge improvement in many ways; it allows for rich meta-data like monotonic timestamps, high precision time stamps, UUID's, exe file names and paths, and incredible easy and powerful sorting and filtering with tools like "systemctl".
If you try to add meta-data like monotonic timestamps in flat text files, they become very long and cluttered, making them hard to read for humans.
Another problem with flat text files are the fact that watch scripts depends on the exact wording of the daemon output strings; if the developers changes the wording, third party scripts will fail. In a perverted sense, the exact wording have become a API that cannot easily be changed or extended.
Not so with systemd; it has a stable API and lots of language bindings. It is easy to make a watch script that targets the stable field's.
Some CLI examples: I have used full length options for readability and since systemd have excellent bash completion for everything, it doesn't involve much more typing.
journalctl --boot -1 --priority err
Show all log entries from previous boot only, that have log level "error".
journalctl --since -5m
Show log entries generated the last 5 minutes.
journalctl --follow --unit smartd.service
Follow (tail) the smartd daemons log output.
journalctl _KERNEL_SUBSYSTEM=usb --priority warning
Show only messages generated by the kernel USB subsystem that have log level "warning"
journalctl --field _PID
The "--field" option makes systemctl show all values of the following journal field. In this case it will show a list of all PID's that have ever written to the journal. Want to see every executable that have ever generated log output, substitute _PID with _EXE. Notice the underscore. Field values with underscores have kernel guarantee for being correct.
It is also easy to track two services that you suspect are causing each other problems:
journalctl --output short-monotonic --boot -u NetworkManager.service -u chronyd.service
This will show the log entries for NetworkManager and a sNTP client from the current boot, and show the output with monotonic timestamps. Nice.
Thanks. I always thought that libraries contained all the bits of common functionality that would be used by different programs.
I'm not sure that systemd does lock out competitive replacements. I'm using opensuse 13.1 and it uses the usual NTP and DCHP and not the systemd derived versions so that implies to me that its configurable as to which programs systemd can use.
"The hands that help are better far than lips that pray." - Robert Ingersoll (1833-1899)
They sit at Red Hat. They plot a take-over. They aim to destroy most of what FOSS stands for. Systemd finally is the last bit of proof needed of the nefarious machinations going on. It is nice to be sure.
Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
Systemd is also modular in that it is comprised of multiple components that run in isolated processes, which avoids having one service crash due to bugs in another. It's also not as spaghetti as people say it is. As I said in another post, the high level differences between systemd and sysvinit are:
- sysvinit starts a whole bunch of services whether you need them or not sequentially at boot time, and the startup is controlled by shell scripts.
- systemd starts services entirely on demand, only when they are needed, automatically managing dependencies, and the startup is controlled by C code.
So basically, they're a lot a like, except that systemd maintains more components internally to the project, and it's smarter and faster.
The only good thing I can see about systemd is the exposure of some Linux system APIs that were not exposed via the POSIX subsystem. Nice - but not required by most of us - and could be added to existing standards based initialization daemons without totally rewriting the rules.
Otherwise it seems to be more likely a thinly veiled (actually not veiled at all...given comments of the principles) attempt to fragment the POSIX world - and forcing projects with limited resources to make a Hobson's choice of whether to support systemd based Linux or POSIX standards exclusively. It breaks write once - compile/run anywhere - that was generally available for those who made sure their applications were POSIX compliant. This means that a lot of software that was available across Linux, and Unix flavors (BSD) will now be exclusively available on one or the other - thus fragmenting the *nix world.
Software is not separate from the ethics that surrounds it. This approach and apparent rabid anti-interoperability view is arrogant and self-serving at the expense of cooperation and choice. Furthermore, the monolithic architecture, obfuscated binary logs, and centralized configuration are antithetical to the Unix way - and makes a linux system as difficult to deal with as a Windows system from an automation and management perspective, and raises concerns in terms of security (the greater the complexity in a system, the greater the opportunity for bugs - and thus the greater the attack surface).
Finally it throws away many many years of experience/knowledge acquired by system admins, developers, and users about how a *nix system operates and is configured. This fragmentation of the human factors aspect will by its very nature cause faults/issues during operation.
So - for a host of reasons, I believe it is technically - and more importantly - ethically wrong.
There is actually one more good thing I can think of: it will spawn new distros, software projects to provide alternatives of various applications in the stack, and perhaps new operating systems altogether - with a renewed focus on design simplicity (KISS) and all of the benefits that come from that. Once a system becomes too complex to understand - are you sure you can trust it? So to recap: systemd has two things going for it; exposure of Linux APIs, and the power to breath life into the further exploration of alternatives in the OS/application layer.
Lodragan Draoidh
The more you explain it, the more I don't understand it. - Mark Twain
Wrong. Redhat's first release was October 1994. RPM didn't come along until 1997. Debian's first release was August 1993. Their history doesn't indicate the date that the first release of dpkg was unleashed, but it was prior to 1.1, which was in June 1996. apt is a more recent addition, dselect was the package management tool of choice prior to that, and was around since 0.93R6 in November 1995.
https://www.debian.org/doc/man...
http://en.wikipedia.org/wiki/R...
http://en.wikipedia.org/wiki/R...
I've been a Debian user since sometime in 1996, was a RH user from 3.0.3 until around the 6.X days, and was a Slackware user before that (back in the pre-kernel 1.0 days when a distro was 50+ floppies for a full install)
It happens about 40 times a day on you average PC, it is just rare it hits anything vital. If you run ECC memory you can track how many read errors it corrects. In fact error-correcting memory exists for servers and workstations for this very purpose. It is real and common.
If it is happening at all with any regularity, it is a sign of faulty hardware. The fact that you would allow a machine to continue operating with a demonstrated record of on-going hardware errors shows you are either using very faulty equipment, or don't have any reason to care.
NASA uses mil-spec parts for good reason. They dont have the luxury of hot-swapping a broken part. Long story short, if youre seeing any ECC failures, you have a faulty part that needs to be replaced. If you're seeing it across an entire range of machines, youre observing either a design flaw, or a manufacturing problem.
I wish I had a good sig, but all the good ones are copyrighted
I like the fact that systemd's wholesale acceptance by all major Linux distros means much less fragmentation in both the way the Linux OS is managed and the easy that upstream projects are now able to support advanced features in a distro agnostic way.
I also like the fact that it exposes advanced kernel features like "cgroups" and "Capabilities" and make them easy to use; just add a keyword in a text config file and restart the service.
Add ProtectSystem=full in a service config file, and the service and all processes it makes can only "read" /usr and /etc enforced by capabilities. So even if the service is compromised, the hacker can't modify these directories, even if the hacker are able to execute code with root privileges.
http://www.freedesktop.org/sof...
Also "ProtectHome=" makes the service unable to read /home, so that no information stealing can take place.
Perhaps the best thing about these features and the many other systemd features like those, are that they can be enabled by either upstream or the distro makers, so that the end user doesn't have to anything in order to improve the system security. It will simply mean improved security and "defense-in-depth" as deafault on systemd distros.
For the most part, people like the features attempted by SystemD. That is not the issue. SystemD is trying to make a clean bootup system. Who doesn't like that?
Most of the complaints are complaints about the architecture of the thing, not features. If we only wanted an OS, we could use Windows and all the crap that comes with it. Windows works fine. We care about how our OS is built, so we use Linux. We want the bootup system to be architected well.
"First they came for the slanderers and i said nothing."
I have an RHEL 6 system with multiple commercial Java applications. For some reason, every commercial Java application out there seems to bundle half of a linux distro with it: they insist on using their own instance of a web server, their own application server, their own database, their own mail daemon, etc. Starting those things serially is true insanity and takes forever.
With all of this stuff migrated to RHEL 7, tweaked so that there's no init + rc.d craziness left, a 4 minute boot-up turns into 1:30 boot-up. This is with spinning drives. I have another iteration of tweaks where I exposed all internal service dependencies inside each of those monolithic app monsters to systemd, and we can be up and running in 1:15. Looking at I/O statistics, with further judicious use of preloading we should cut it down to 1:00-1:05 after a clean shutdown. The shutdown times, usually well over 2 minutes long, are down to 30 seconds.
This is all measurable, no-bullshit, experimental data. We even managed not to have to touch any of the commercial app's rc scripts, I simply coded up the requisite systemd configurations for those services, based on the rc scripts. If there's any question as to systemd's effect on the application, or if we need to deal with vendor support, we can always start it up using the rc scripts.
So, I don't care about ideology behind systemd, and how it fits with someone's ideas about what Unix or a Linux distro should or shouldn't be. All I know is that it'd have taken me 5-10x as long to tweak the system rc.d scripts to parallelize them than it took me to "port" the commercial apps we use over to systemd. Of course the distribution's own services already use systemd, so I didn't have to touch that, only tweak a few things slightly to further leverage parallelism. It has saved us time and money, and the system availability is much better in face of the rare reboots. Everyone is happy. We're a small shop with a single server, and we use no virtualization nor any other enterprisey stuff. Just a plain old RHEL 7 running directly on hardware, with selinux turned on, with custom policies written for each of the commercial apps.
A lot of the "recommendations" I've got from "veteran" admins essentially reduced to throwing money and resources at the problem. That's IMHO a rather direct vindication of systemd: if it takes a SAN, multilevel storage and VMs just so that the damn init/rc.d-based system will boot in a reasonable amount of time, and all of that is taken care of by systemd, it'd be rather irresponsible for me to try and ignore systemd. In the name of what? Nothing I can think of. It's not like I can tell the management "hey, RHEL 7 comes with systemd, but I can keep using RHEL 6, not use systemd, and spend $25k+ for a SAN, VM and OS licenses, and the time to set it all up and document it all".
<rant> It takes some chutzpah for commercial vendors to claim RHEL 7 "support" in their solutions, if they support neither selinux nor systemd.</rant>
A successful API design takes a mixture of software design and pedagogy.
It's not available on OpenBSD.
But it will be. The "systemBSD" and "Uselessd" projects are just a warm up.
Of course all the BSD's will get modern init systems like systemd before this decade is over.
I like that systemd combines the functionality of insserv, inetd and autofs into a single resource activation model so that whether the resource is a file, a process, an IP socket, UNIX socket or a named pipe. It manages everything. You don't have to worry about which resource kicked off or race conditions on processes tied to multiple resources. We could get to a point where things like mysqld could be reliably started by activation from either named socket or TCP/IP without concern for race condition. It really is inetd done right.
... and then the systemd kids will just end up reinventing the same sort of hacks that they were complaining about in SysV scripts to begin with.
So what does it do if a service does not respond to a request to shutdown properly? Does it just pull the plug with a kill -9, because that seems like a terrible idea to me.
I went through the Solaris 10 transition to SMF.
I don't think it was stable until 10.4. You can still create new init.d stuff.
Systems feels similar, but it is more stable (in RHEL 7). The man pages are useful.
I find the upstart man pages in useful. Why doesn't the upstart page reference
stop, start, etc?
Now if they require us to use network manager instead of sysconfig/network-scripts..
With systemd, you have integrated resource limitation, meaning you can explicitly set nice level, OOM score adjust, IO scheduling class, CPU scheduling policy, etc., in the unit file for a service. You can see the different knobs available in systemd.exec(5) http://www.freedesktop.org/software/systemd/man/systemd.exec.html
I have a very old Pentium 4 machine acting as a web server (500 mb of memory!); sometimes the MySQL instance would consume all of the CPU, and the Apache requests would get queued until it brought the machine to its knees. If I was really patient I could try to get an SSH connection to zap the MySQL and/or Apache processes, but what I usually did was to ask the people nearby to push the red button and restart the machine. With systemd now I adjusted the CPU scheduling of MySQL, and I have never had the issue again.
Yes, I could do that independently of any other init system; but it's clearly integrated with systemd, and is really easy to set (and with drop-ins, you don't even need to worry about the upstream unit file changing). Only for that, I will not change again to any other system that doesn't provide, out-of-the-box, the same functionality. Or any of the other nice thins that systemd provides.
So basically, everybody with resources (such as skill+time, or money+desire) choose to migrate to systemd, and people without resources (no time or no technical skills, or no money) have to take the "scraps" (other people's work) and... they can't just keep using SysV init? Why, again?
No, they do have choices. Distros are real, they have real people working on them, and they choose package A or B based on their needs and philosophy. Keeping SysV init is an easy choice for a distro that doesn't care about the needs of sysadmins. Choosing systemd is also easy; it already exists and solves real problems.
Protip: if "your side" has a bunch of trolls name-calling the developer, double-check all technical claims. Don't just believe and repeat whatever FUD you hear that sounds technical, or came from a guy you're sure "knows something about... something."
So what kind of stuff are you starting up in parallel then, that you gain so much in boot time?
I have not seen any practical gains here. Even on my second PC, an old core2duo with an SSD, I don't see any difference in boot time between Slackware, Arch and Mint. The longest parts in the process are definitely the POST and grub phase, but once Linux actually boots it just zips on to my boot screen in a few seconds.
If there is a difference, it's going to be in the magnitude of a second or so, and that hardly warrants a new init system in my opinion.
Caveat: I am not a sysadmin. But I have read up on SystemD.
With systemd, one can't even remotely log a journal natively
Why not? SystemD offers its own logging system, but does nothing to prevent you from installing a more capable logging daemon such as rsyslog.
Note that before Fedora 20, rsyslog was installed by default, along with the SystemD logging. In the announcement it says:
Emphasis added by me.
http://fedoraproject.org/wiki/Changes/NoDefaultSyslog
You stated "one can't even remotely log a journal"... well, one can if one is able to type: yum install rsyslog
So IMHO your whole argument fails. Not only is it not impossible, it's not even difficult.
The story was submitted by a user named "ewhac". Unless you are accusing "ewhac" of being a sock puppet fro samzenpus, this whole mini-rant seems rather pointless.
lf(1): it's like ls(1) but sorts filenames by extension, tersely
Wrong, services are considered "booted" when they are ready to process requests. For most services, the kernel kan be made to "buffer" request, so we don't care in which order they are started. For those rare cases when we do wan't to hold off a service, the unit-files can specify exactly what to wait for.
Oh, and by the way Sys-V init scripts never solved this. They depended on the daemons to solve this, which they virtually never did. Or sprinkle the init-scripts with strategically placed sleeps. This resulted in either the boot taking to long, or fail.
Try to do a 'grep sleep /etc/init.d/*' Every sleep you find is a potential boot failure.
You can read more about it in the systemd-documentation. You'll find it on the systemd homepage: http://www.freedesktop.org/wik...
Odd that of all possible choices, systemd developers chose almost /etc/sysconfig, while I do see things /etc/hostname etc.
always a way that is exactly the same or very similar to what Debian does.
For example, I don't see stuff like
like
Everybody else has /etc/hostname too, sorry to pop your fanspiracy.
Abandonment of classic config files and locations.The unit files are nice, but create a pretty large barrier to entry. This has created the requirement for a lot of duplication of work and two different places in the file system to look for config info. The information in the .service files could have been added like the LSB headers to the /etc/init.d/* files. The socket activation information could have been stored in inetd/xinetd compliant configurations with some ignorable syntax for adding named pipes and sockets. Automounts could have been parsed from /etc/auto.master. Fortunately they did this with /etc/fstab and the existing LSB headers at least.
I feel that most sys admin angst on systemd comes from the fact that they moved all the config files and created a new standard. They could have saved themselves a lot of ill will with this more backwards compatibility friendly configuration interface. instead of everything being a 20 character file name stuffed in one of the many systemd directories.
It happens about 40 times a day on you average PC
No, it doesn't. I operate lots of machines with ECC RAM. I've seen ECC correction. Bits flip, but nowhere near that frequently. It's very rare.
Yes, he is. Coward.
Please try reading and fully understanding posts before responding.
If he comprehended your words, he wouldn't have had to post as a Coward. lol
My laptop boots almost as fast with Systemd compared to System V, and it shuts down much faster.
So the random bit flip you're not at high risk of, means that none happen? Derrrrrrrrrrr..... Oh, wait, my mistake, you're Anonymous Coward, it was my mistake to think you're more technical than a tree frog.
Fun fact: digital computers are made of analog parts, and each transistor has different performance. Random-seeming, unexpected bit flips can and do happen (dozens per day per host) just based on various minor manufacturing flaws and material inconsistencies. Rarely hurts anything important, I mean, unless you have a whole server farm, then you're having a small number of things go wonky all the time. If something only crashed one time, ever, you want it to have just restarted. You're not going to solve 100% of those in a large environment. The ones that call for resources and troubleshooting are the problems that happened 2 or more times, or the problems that line up with known causes, or that created a useful crash report in the logs.
Their image as an embrace and extend project. And more concernedly that they don't care that they are viewed this way. The big problem here that they could easily fix is breaking up their source repository into multiple smaller projects. I think the best example of this is "systemd-"consoled. Now don't get me wrong I like consoled a lot. It looks like a great next gen production of kmscon. Which I also though was a really good innovation project. But there is no good reason it should be in the systemd git repo. systemd obiously doesn't need it and it doesn't need to be any more tightly integrated with systemd than X11 or mariadbd does.
They don't care that they are perceived as not understanding the importance of keeping things as loosely coupled as possible.
I guess the alternative is you look at the systemd repo as the whole Redhat system stack with the ability to pull out the subcomponents you want, but you are really taking part of a whole distro not one of many separate services. And it will be supported as such.
OK thanks for the clarification.
However, I have never ever needed a pid file. If I have written the deamon myself, it ensures it "ps" only produces the correct "hit" or can be readily found in /proc (if the OS supports it) or can otherwise be communicated with via an IPC. For other daemons I will trust to careful ps and grep and have never stopped the wrong thing.
Ok that might be a bit annoying for most its true. However, as all daemons are the child of init, init will be informed by the kernel if a child dies and wait() will get the pid so all that difficulty could be fixed in a few extra lines to init.
The grouping of everything together is achieved by cgroups, not systemd so theres no reason why you cant arrange that using standard sysvinit. To be honest as cgroup like technology has been around in other systems before, youd wonder why nobody ever bothered to implement such a solution before, maybe nobody saw the need.
Actually, the binary logs bother me the most.
The killer advantage of systemd is the money it makes. By integrating this software into our distro, we can be sure that any business using linux will take one look at the complexity, binary logs, and other great features and realise they really need to pay for a support contract. You see, this fixes the problem of the old, really lame (simple, yuk!) systems that have been around for years - anyone with a bit of shell knowledge can learn them in a few minutes, and it's really hard to make money when kids with some computing knowledge can sort system problems out. No, in order to convince customers that support contracts are necessary we need to replace the easy, working stuff with something we invented, something far richer, something that we can integrate into the system and which gives us addtional control. With this approach, we can effectively neutralise all those damn people who can learn how the system works in their spare time. Just make it so complex, only paid professionals can afford to flail about fixing things! As is clear, systemd fits that bill perfectly (along with pulseaudio and a nod to udev). Never mind all those whining ninnies (hey, tell them to go pay for a support contract if they want to use linux). What really matters here is the benefit to the bottom line - just remember, people, complex crap sells support contracts!
In summary, systemd is great on other's people machines - when you'd getting paid by the hour!
All your ghosts are just false positives.
Actually the Mas and Pas is a easy Linux market, just setup a desktop with a functioning copy of firefox or chromium, remote administration via ssh and you're set. Add open office for the random document and that pretty much covers the Mas and Pas requirements.
As long as it has functioning Java and Flash. Unfortunately, Java in Firefox on Linux tends to break a lot and my experience has been Flash only works correctly on 32-bit systems.
He effected a bored affect.
syslog-ng is receiving a copy of what journald is deciding to write
Yes, that seems pretty clear. What of it?
The original poster was claiming that SystemD is unsuitable for servers because there was no possible way to get remote logs, and thus if someone cracks the server he could mess with the logs. Installing rsyslog would solve the problem. The attacker could scramble the SystemD binary journal files, but not the remote log.
Why should I care whether the log data was collected by the SystemD logger (I guess it's called "journald"?) before rsyslog got it? As long as the log messages are faithfully passed along, where's the problem?
lf(1): it's like ls(1) but sorts filenames by extension, tersely
All they've done in systemd is write C code to start up services that used to be started instead by shell scripts and added the ability to make dependency resolution automatic so that services are only started when they need to be.
If that had been all then there would not be this huge controversy. You are describing a very stripped down version of uselessd which is already a stripped down version of systemd. You are ignoring 98% of what is most objectionable about systemd by reducing it to the least controversial component.
ISTM such vast oversimplifications add fuel to the fire and further polarize the debate.
We don't see the world as it is, we see it as we are.
-- Anais Nin
I do use ECC in servers and I definitely do not see 40 bit flips in a day.
If you see that many, it's worth making sure the power supply is stable and the power quality is good.
Power supply ratings are total crap these days. To get actually stable power, you may need to go with one rated for double the power that will actually be needed.
As I understand it:
1) Systemd has a much slower shutdown, which means a reboot takes much longer.
2) Debian can be rebooted in 30 seconds. So even if boot was speeded up, it is a negligible advantage, and hardly justifies such a radical change.
3) Linux servers are not rebooted very often, making supposed advantage even more negligible.
4) If a service is critical, there should be a parallel server running it. Which make boot time even less meaningful.
5) According to this article at Distro Watch: http://distrowatch.com/weekly.php?issue=20141027#qa : boot times are not improved. That has been my experience as well.
Systemd is open source software, which Lennart has made available more or less out of the goodness of his heart. You may hate it -- God knows I fucking hate it -- but the world really is a better place for it having been written. Why? Diversity. Systemd is yet another set of ideas in the ongoing discussion that is open source development. Software gets written, then it gets patched or replaced by someone who thinks they can make it better, and alternatives for every use case flourish. It's a conversation, a debate. So while there may be vehement disagreement with the ideas that systemd represents, we are all better off for at least having heard and considered those ideas.
Just don't make the entire user-space stack depend on systemd. Please.
N4st0r, trixx0r h0bb1tz0rz! Th3y st0l3 0ur pr3c10uzz!
Please provide a link to your patch or git repo with this feature.
Yes, I like this feature of systemd. None of the wonderful, stable, featureful init systems (I have maintained init scripts in linux distros with two different init systems before systemd) linux init systems has it.
Until one does, please acknowledge this as a feature systemd has that is nice, and is non-trivial on any other traditional init system (at least without invoking the wrath of the 'I don't want my init system to take over /dev/log' crowd).
Well, absent any useful information, your opinion on systemd would have been preferred to a lecture. Me? I'm suspicious of anything new, and believe that SCO should have had the last word in this whole UNIX thing.
“He’s not deformed, he’s just drunk!”
iOS uses launchctl which is systemd's father.
Caveat: I am a server admin.
With systemd, one can't even remotely log a journal natively, which is par for the course in many server environments.
If you are referring to the feature enhancement tracking bug you link to below, the text of the bug states:
I assume the 'par for the course' is normal log forwarding via syslog, which is noted as already available in the text above.
The feature linked to from the bug is a feature that doesn't exist in any logging solution I am aware of. It brings the benefits of the journal (being able to detect if there are missing messages) to remote logging. Yes, there are means to try and prevent an attacker from reaching your logging server, but can you *prove* your remote logging server has not been tampered with? No? With remote journal logging, you would be able to.
No, this will not remove journald from being the owner of /dev/log (as you imply in replies below). If you use this feature, you will have the 'binary logs' feature the rest of the anti-systemd crowd decries on your remote logging server.
The feature you want has been available since journald was availble in any released distribution (and I might add is usually the default in a server-oriented distribution such as RHEL7); the feature tracked by the bug you linked to probably isn't what you want.
man xinetd
The problem is that he didn't want a debate, he wanted a love-in.
This is not woodstock.org.
I tried it. It took 5 seconds to complete and put funny carreted As in the output.. /usr/sbin/httpd -DFOREGROUND
ââ 670
WTF?
I should use this sig to advertise my book ISBN-13 : 978-1501515132.
xinetd does that for internet ports. It doesn't do it for generic sockets. Something like an xinitd+ could do it for sockets. The idea is clearly there, a key hard part done. There might be some work to getting it to work smoothly for partial loading but I'm not sure how useful that is in practice.
If you're in the situation like me where systemd has a SERIOUSLY deleterious effect on your computer, there's nothing stupid about switching to a distro that doesn't use it. Frankly, I'm sick of having my shutdowns delayed because for no apparent reason it wants to wait for 90 seconds for some process it doesn't even bother to identify to finish before finally shutting down. That said, I WAS rather hoping someone might post some top-level stuff as the OP requested about what's GOOD about systemd, so I could see if there's ANY benefit to it.
Consisting of multiple binaries/libraries is not sufficient to call it modular. Not in my book anyway. What are the options to replace a specific "module" with a different implementation?
You got it in one. I think real flame war over systemd would have been much smaller if there wasn't so much money to be made in fanning the flames. Sorry I don't have mod points at the moment.
"I have an RHEL 6 system with multiple commercial Java applications." That's the difference you're looking for. I'm not running a barebones RHEL system. 95% of the resident set on that server is code that didn't come from any distro, it's the heaps of a multitude of JVMs and database servers that are bundled with commercial apps. Every one of those damn things takes at least 10 seconds to start up, and that's only if it's a simple thing. A full-stack application like Zimbra can be starting up for 40 seconds. There's also the issue of parallelizing the bring-up of network interfaces, which I did. For some reason a stock RHEL 6 takes 5+ seconds per network interface - I managed to parallelize that, too, and to set up dependencies between each interface and the services that use it. Since we isolate nodes on the internal network using tagged vlans, there's about 50 interfaces that have to be brought up, and most of them have no dependencies.
"If a service is critical, there should be a parallel server running it." Maybe in an alternate reality. Who can justify spending on a very decent server that is then vastly underutilized because you don't run everything you can on it? That "server" would be, at best, a VM. Of course a VM by itself doesn't fix the internal dependencies between elements of full-stack monolithic commercial apps.
It wouldn't matter if I used a pre-systemd Debian, since the serial shutdown of the commercial apps that I run would take 2 minutes. It's distro-independent after all, since all those apps are 3rd-party monoliths as far as the distro is concerned.
Again - we run a multitude of services - CRP/ERM, building automation, support for our own hardware, email (groupware), document management, phone system, security system, and a couple of other things, including support for our own R&D hardware labs. It's all on a stable, well-performing piece of hardware, that's well utilized with a bit of capacity to spare.
A successful API design takes a mixture of software design and pedagogy.
where's the problem?
Upon re-reading the original post, I have figured out what I missed the first time around: the original poster doesn't trust the SystemD journal system and wants the ability to completely remove it. (I had tunnel vision on the remote logging thing; mea culpa.)
The original poster also claims that, as existing logging solutions are well-understood, that using the SystemD journal system might expose the owner of the computer to liability. I consider this idea rather wild; I'm not a lawyer but I'm pretty sure that no court would consider it negligent to use the provided logging daemon that Red Hat has been shipping for years now. And, one of the reasons for the binary format in the first place is to make it impossible to alter a log without the changes being detected; this seems like a rather strong advantage with respect to liability.
I would like to see statistics of how many computers are running SystemD, and of those, how many have had actual problems with the journal. If it's as bad as the original poster is claiming, then let's see the numbers.
lf(1): it's like ls(1) but sorts filenames by extension, tersely
I have a Debian HTPC system tracking testing and systemd tried to save from the indignation of PulseAudio. Given configuring ALSA for AC3 S/PDIF is not as easy as it should be, I let PulseAudio stay on my system.
Then came systemd and any application (Flash, KDE itself, VLC) would hang as soon as it attempted to output sound. "PulseAudio --start" instances would just multiply and multiply.
My girlfriend was somewhat annoyed that she couldn't watch her programmes, and trying to work out what was happening was getting to me too.
After battling PulseAudio and ALSA settings, I was started to question if it was a mistake to leave PulseAudio installed all this time. Systemd was trying to help me see my error.
However given my girlfriends mood and lack of patience, as well as the fact that everything worked before Debian switch my init system, I tried apt-get install sysvinit-core and reboot (mostly out of desperation). From that moment on we've had no problem with sound, PulseAudio nor any of the other 'bugs' that showed up recently.
Given my sense of humour, I find it hilarious that systemd seemingly broke PulseAudio. Beyond making me laugh it also induces a sense of nostalgia. As I was in Uni all those years ago, I remember playing CoreWars. This was a game where two users would to develop a programmes that tried to avoid and eradicate the other users program.
Up until I removed systemd I imagine a similar battle being waged on my HTPC. PulseAudio battling with PID 0 and spawning many copies of itself as protection. On the other side systemd using it ultimate control of the system to hijack dbus and udev in order to isolate PulseAudio and to prevent it from communicating with the outside world.
If it weren't for the non-amused look on my girlfriends face, I might have let the two battle it out. However as it stands PulseAudio has won, as systemd is no longer running on the system. Did good or evil win? We'll never know. Suffice to say during the whole affair systemd said nothing, not a single peep to stdout nor stderr.
No.
Stop harassing me to use your shitty software.
Regards,
A gentoo user
Buck Feta. You know what to do.
That's systemd's problem (and your response is their attitude) in a nutshell.
Well actually that's systemd's solution. It never has been about fixing a problem with init like a lot of people claim. Systemd is supposed to be a one stop shop for complete integrated system management. A ground up redesign and a change in philosophy.
Yes some .... err many... people hate that idea since it's not Unixy (but they give X a free pass and poo poo Wayland so ... whatever). Fundamentally systemd is not about making something better. It's about bringing a lot of functions under one umbrella. I actually like this. Many people hate this.
In fact many people seem to hate the idea that a new feature needs a new ground up re-write even if they are doing something simple. Some of the comments here seem to suggest that the correct solution is 3-4 bolt on helper applications running on top of sysvinit as a way of doing even a tiny subset of what systemd provides.
When jumping on a machine with a distro different to my own, I'd have to read for a while before understanding how to start/stop services. This was a pain if I needed to quickly help someone out on how to do something.
Now all distros run systemd, so it's just "systemd start nginx" on any gnu/linux distribution. Except gentoo, but I don't see a gentoo user asking me for help on how to do X. I also haven't come across clients with gentoo-based servers.
Standard service unit files help too. The work is done once, (generally upstream) instead of having to write service configuration files for every single distro (and keeping them up to date!). This may sound trivial, but the amount of effort reduced is immense!
Odd that of all possible choices, systemd developers chose almost always a way that is exactly the same or very similar to what Debian does. For example, I don't see stuff like /etc/sysconfig, while I do see things
like /etc/hostname etc.
Everybody else has /etc/hostname too, sorry to pop your fanspiracy.
Let me quote from the biggest myths:
Now, as it turns out, more frequently than not we actually adopted schemes that where Debianisms, rather than Fedoraisms/Redhatisms as best supported scheme by systemd. For example, systems running systemd now generally store their hostname in /etc/hostname, something that used to be specific to Debian
and now is used across distributions.
Maybe the example was too subtle, but for sure there are some things from /etc/sysconfig that are gone from Red Hat, and are substituted by
Debian-style configuration.
You are manufacturing special situations to support your conclusion.
Are you kidding about the server? If a service is critical, the cost of an extra server is nothing. Also, if you are running all the stuff you say you, how "under utilized" could the server be?
Linux has it's problems - no doubt about it. But boot time would rarely top the list. SystemD is solving a problem that is not there. The radical changes that are required to utilize systemd are not justified, not by a long shot.
Redhay is using MS's playbook.
- Systemd seems a lot like Microsoft's OOXML strategy: say it's open, when it's really controlled by one company. Claim that users demanded it
- Hide everything in a binary blob
- Embrace monoculture
- Do not play well with others - especially UNIX
- There can only be one and so you must win at any cost
- Replace accepted standards with *your* standard
- Embrace, extend and extinguish because the people responsible for it have a culture which wants that
- Adopt Borg philosophy: resistance is futile, we have already won, why are you arguing?
- Be intensely hubristic: systemd is the best, therefore systemd is superior to all other systems, therefore systemd should to the jobs that other systems do.
Pidfile is a pretty simple approach to singleton-like behavior of a service. Check for pidfile, if other than own, check for process under that pid, treat it as master/server, and pass whatever commands you had to it, then quit. If the pidfile is absent or no master resides under its pid, create/overwrite it and become master yourself.
That's not the only possible approach but it's much simpler than elections/arbitration and searching the whole process table for other instances of self or otherwise advertizing yourself to other instances.
Otherwise, a pidfile tends to be a handy tool for companion scripts/tools, but far from essential.
45 5F E1 04 22 CA 29 C4 93 3F 95 05 2B 79 2A B2
You do not know what you are posting about.
I worked as a developer, and an admin. Admins are way more than users with root access. I doubt you would last a day as an admin.
> If you are telling me systemd boots up my system faster, then you've just convinced me to use systemd.
Good lord, more crap about fast booting, as if that's some huge issue. It's not.
You think there is nothing more to performance than fast booting? No concerns about security, or stability?
I can't imagine it would be all that hard to add AF_UNIX sockets to xinetd.
I'm not so sure the whole idea is actually all that helpful on a modern system. If the daemon runs standalone but isn't active, it will be paged out (well, the data segment gets paged out, the rest is already backed by the bin and library files) to make room for things actually being used. At that point it doesn't really hold significant resources. If something actually connects to it, it will page in already initialized and ready to go.
OTOH, if xinetd or systemd holds the socket, still no significant resources, but if something contacts it, you have to wait for both the page-in AND initialization.
That whole scheme made more sense back when Unix systems typically had less sophisticated memory management.
were you talking to santa claus?
pidfile approach is guaranteed to fail or require operator intervention from time to time. It can even be dangerous and result in the wrong thing being killed just as much, if not more than not using a pidfile.
Your description of the workflow using a pidfile already requires accessing the process table so why bother with all the other stuff. Just look for another instance of your daemon. If there is one, send it your commands but if there isnt start up.
Well... All told, I think that went rather well.
I wanted to chime in and thank everyone for participating in what was clearly an insane exercise in trying to cut through the acrimony and vitriol and get some actual information on what systemd is and what it's trying to do. You can't always grok what complex things are about just from the docs. That's why I wanted actual first-hand experiences from people who could point to actual gems they'd found.
To respond to some recurring remarks throughout the comments:
No, I'm not shilling for RedHat or Poettering. In fact, I gave Poettering some stick for the whole corrupt-binary-logs-aren't-a-bug thing a couple weeks ago. I was being forthright in the opening paragraph: The simple fact that systemd has been widely adopted despite widespread protest made me genuinely wonder what I was missing that I hadn't figured out from the docs I'd read. So, no, there's no conspiracy here.
Well, gosh, sorry, but I was trying to save everyone time. Seriously, tell me you haven't gone, "Oh, ${DEITY}, another systemd thread; there goes my afternoon as I pick through the rat's nest of comments." So I hoped -- perhaps naively -- that requesting some organization would let us all get to the meat of issues of interest fairly quickly. And enough people did choose the follow the rules that the discussion overall turned out valuable (for me, anyway).
For largely the same reason I dislike Windows without having comprehensively pored over the "design" docs for COM, DCOM, MFC/ATL/WTL, WDM, NTFS, NTLM, Direct${THING}, Active${THING}, etc. etc. etc. Poorly-designed systems seem to have a certain "pattern" to them, and systemd at first glance seemed to match that pattern (the use of Windows-style INI files syntax didn't help, either). But the people adopting systemd are clearly not idiots, so I hoped people with actual experience with the thing could convey insights that (for me) the docs so far have not.
*headdesk* I would like to apologize to a no doubt deeply irritated TV ad executive for completely misattributing their fifteen-odd years and millions of dollars worth of loud beer ads to the wrong company (I think this speaks well to my socially-isolated geek cred, though
In the best tradition of USENET, I thought I'd summarize the highlights of what I got out of the whole thing. Most of the good posts have already been modded up, but the ones that especially stood out for me were these:
Editor, A1-AAA AmeriCaptions
How do I find the master instance, say, from a tool written in shell script?
45 5F E1 04 22 CA 29 C4 93 3F 95 05 2B 79 2A B2
As I have been coming to understand, you have a good point. What I don't know is if these components have well-documented interfaces so that they can be swapped out.
The community is not forming around systemd. Systemd is being rammed down our throats by one company.
systemd had hundreds of contributors before it was used in any long term stable Linux distro like RHEL7. So many developers started to drool when they saw the systemd feature list; it presented much of what many people have longed for in a Linux init system. So yes, systemd was quick to gather a community and is now probably one of the largest Open Source projects when it comes to developers.
systemd is simply superior to SysVinit in every way which is why all the major distros adopted so quickly. It simply solve a lot of real world problems and makes life easier for both upstream developers, distro makers and end users.
For those who think SysVinit style init systems is what Linux should be using the next 30 years, there is Slackware. It is a nice general purpose distro that is very traditional.
So nobody is forced to use systemd if they don't want to.
Which GUI on 6.5? I use the default Gnome 2 and it's OK. Is 7 on Gnome 3 (blech)?
Confucius say, "Find worm in apple - bad. Find half a worm - worse."
I am nowhere near an expert, but as someone who uses Linux everyday (Ubuntu. So what?), I have to say Pulse doesn't give me much trouble. It's annoying that I have to edit a conf file to set up my 5.1 audio channel map, LFE remixing, and resampling rate, but after that, all I have to do is adjust my volume in alsamixer and call it a day. Hardly a catastrophe. Systemd, on the other hand, I agree with in theory: I agree the boot process should be handled by daemons that dynamically load and unload what is needed. It should have been that way from the beginning. A simple script, I suppose, could do the job too, but it's 'dirtier', and seems rather ... hacky.
However, systemd's tentacles have now begun to dig themselves into other parts of the system and that, to me, is wrong. It should handle booting and dynamically unloaded/loading modules that are needed. That's it. Why does it need a console? Debugging purposes? That can be done with the Terminal we already have.
TL;DR: Systemd's roots are growing too big for the pot.
You have a good point about memory management being an alternative for holding huge numbers of sockets open.
https://www.youtube.com/watch?...
Confucius say, "Find worm in apple - bad. Find half a worm - worse."
This has it pretty much covered.
Confucius say, "Find worm in apple - bad. Find half a worm - worse."
This is a Halloween joke, like April Fools right? Systemd doesn't have anything good I can say about it.
It's not on my FreeBSD servers, so it's got that going for it.
... Keeping SysV init is an easy choice for a distro that does care about the needs of sysadmins. ...
There; fixed that for you. Your statement made a very big assumption - not borne out by statements I've read here by system admins.
Lodragan Draoidh
The more you explain it, the more I don't understand it. - Mark Twain
For those who think SysVinit style init systems is what Linux should be using the next 30 years, there is Slackware. It is a nice general purpose distro that is very traditional. So nobody is forced to use systemd if they don't want to.
Until some key functionality used by people is no longer available in that distro due to decisions made upstream to no longer support the code base, or other dependencies.
If I use KDE - which I do - then packages for that become unavailable at some point in Slackware given the above. That means I will be forced to use systemd if I want to continue using KDE; which also means I will have to change distributions, assuming Slackware remains systemd free, as well.
Not trivial. Not easy. Not freedom of choice.
That is simply a lie.
Lodragan Draoidh
The more you explain it, the more I don't understand it. - Mark Twain
It doesn't crash every five minutes? That is a positive, right?
There; fixed that for you.
No, you're just trolling. Nothing was fixed, and the very concept that you can "fix" another persons opinion by stating your own opinion as if it was theirs... is not a realistic way to convince anybody of your opinion.
Odd that of all possible choices, systemd developers chose almost /etc/sysconfig, while I do see things /etc/hostname etc.
always a way that is exactly the same or very similar to what Debian does.
For example, I don't see stuff like
like
Everybody else has /etc/hostname too, sorry to pop your fanspiracy.
Let me quote from the
biggest myths:
Now, as it turns out, more frequently than not we actually adopted schemes /etc/hostname, something that used to be specific to Debian
that where Debianisms, rather than Fedoraisms/Redhatisms as best supported
scheme by systemd. For example, systems running systemd now generally store
their hostname in
and now is used across distributions.
Maybe the example was too subtle, but for sure there are some things from /etc/sysconfig that are gone from Red Hat, and are substituted by
Debian-style configuration.
Sorry, redhat has had /etc/hostname since the 90s. As for /etc/sysconfig, I have a systemd distro from the RedHat family, and it still has /etc/sysconfig too.
You quote the least important part of that passage, and I think it has a very different flavor when the whole thing is quoted:
So "more frequently than not" isn't the same as "almost always," /etc/hostname was probably a clumsy example since RH already had that file, which is read as configuration by other programs, but not usually what is setting it. But the point is that they have an agenda of pushing towards consistent configuration, and to do that by setting defaults. Because those are often the easiest to standardize on. They don't go into the why. I would speculate that since RH is perceived as being behind systemd already, and Debian fans won't complain as much about Debianisms as RH-isms, it is simply more down-hill to standardize in that direction. Because where these differences exist, all the variants have been proven to work, so the difficulty of adoption is the more critical thing.
It certainly undercuts the RH-ism complaint, the only problem is that it is standardization that the complainers are against. They don't want the distros to get locked into having the same setup as each other. What really destroys the complaint though is that these are only defaults, not requirements. I would not be at all surprised if a future Debian wants to move away from the Debianisms because they're hated by users as RH-isms as soon as somebody says, "well we can't change it because it is standardized."
None of the involved parties are trying to make standardization required, and they're not trying to choose the best configuration system either. That is why it is going to be hard to stop them from improving defaults.
I have all sorts of high reliability services running on quite a few different servers, and I have plenty of them that will restart themselves, monitor their own crashrate and terminate completely if they crash N times in M minutes, etc. This is not rocket science and doesn't require to be built into PID 1 or something like that.
Frankly I think its a bad idea to create dependency chains onto huge complicated subsystems that often aren't appropriate, aren't needed, or are simply overkill.
"Malo periculosam, libertatem quam quietam servitutem." -- Jefferson
This is forced on me when I don't need or want it for exactly what reason that you can explain? If I want binary logging there are already solutions, which you have JUST NAMED which work fine. I've no need or interest in having an init system that is too big for its britches foisting another one on me. Compartmentalization IS important.
"Malo periculosam, libertatem quam quietam servitutem." -- Jefferson
this is precisely the point. There's no need for a single giant monolithic product that tries to do every damned thing.
"Malo periculosam, libertatem quam quietam servitutem." -- Jefferson
I feel that systemd in general addresses weaknesses listed here: http://web.mit.edu/~simsong/ww... Along with Wayland, ZFS, etc. of course.
I know tobacco is bad for you, so I smoke weed with crack.
You have the factoring wrong on this sort of system design. You shouldn't have a monolithic controller implementing all these features. Instead you should have individual scripts that CAN do it any way they want, and then a large library of tools that properly implement all the things that people ACTUALLY want to do in a proper fashion. This allows incremental adoption, avoids dependency lock-in, and preserves flexibility and modularity. Instead of replacing init and trying to incorporate every possible feature in systemd and exposing them with configuration options what systemd SHOULD be is a set of functions that daemons can call and some wrappers that will let you compensate for or enhance whatever ill-behaving services already exist which can't simply be fixed up with changes to their init scripts.
As for security, that's an independent cross-cutting concern which is already handled by other tools. If there's a need for some command-line tools to expose some kernel functionality, or some libraries to do so, then that's one thing, but why is this grafted into the same tool that performs system startup? That's not good factoring.
We could have the same discussion WRT container support and other elements of systemd, most of which belong in completely seperate tools. If there needs to be additional framework around those different tools so they can do some new/better things then that should be done in the wider community so that we can have standards, not dumped on everyone as a fait acompli.
"Malo periculosam, libertatem quam quietam servitutem." -- Jefferson
If it has been so well thought out, then why isn't there a parameter available for each service that says "don't automatically restart this if it fails"?
There are times that services WILL fail, and should not be restarted until the underlying problem is fixed.
And that binary log file? absolutely ridiculous, why? so i have to learn a new tool to find out why a service stopped? When before all i had to do was check the last 20 or so lines of a text file.
Actually, EBCDIC was weird because it's tied so closely to 80-column Hollerith encoding. Back in those early days of BCDIC encoding (which pre-dated EBCDIC), conversion of card hole punches was done with actual wires, plus a few transistors (or tubes!). When the System/360 came along, the engineers used the same techniques to decode card column patterns "at speed". I learned this for myself when I had to write a driver for a minicomputer (GA SPC-16) to interpret the punches. I didn't have enough words to use a proper 4096-entry table, so I had to use the same tricks to do a 1-of-n selection of the digits field, and then use the three bits from that and combine with the five bits of zone field, and look up the correct value in a 256-character table. The generation of the punch solenoid pattern used the same table in reverse, saving space at the expense of CPU cycles. In a 16-bit machine with 32 users, space -- especially low memory space -- was at a premium.
http://en.wikipedia.org/wiki/EBCDIC
One advantage of doing the punch portion of the driver that way was that there was no way for anyone to cause the punch to generate "lace cards", like the earlier, clunkier driver did. Great way to destroy the card punch we were using, as the power supply in the external box was too small to drive ALL solenoids for ALL columns of a card, especially card after card. The Field Service people told stories of the damage they found at customer sites because of lace-card punching. The FS people were relieved when the new driver proved to prevent the problems.
As I recall, there was an "ASCII mode" in the decimal arithmetic instructions in the S/360 and follow-on systems so "zero and add packed" (ZAP) worked just fine in dealing with ASCII source data. The conversion of the sign was a bit of a problem, but most ASCII input didn't try to encode the number sign in the last character anyway.
Did you know that one of the early porting targets for Unix was a System/360 computer?
Yes, liking it, absolutely! Systemd-sysv (the package that installs systemd as init) installs are thru the roof, and so are votes for the package. Note the decline in sysvinit-core and its votes, it's an active choice. Voters agree with you that systemd-shim is not a good ide, it's dwarfed in the scale against systemd, so it's hard to estimate just how few they are. If anything, the discreapancy between systemd-shim installs and votes indicate that it's pulled in by dependencies without people noticing.