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.
I hope Bennett doesn't see this and start including rules for how we're allowed to reply to his posts...
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.
Seriously? I know, the whole "slashdot is dying" trope has been going on... well, basically since they changed the name from "Chips & Dips", but fucking A, how does this shit even get posted, Samzenpus? Do you just WANT to watch this putz get completely eviscerated with text-based rapiers?
ewhac, keep this bullshit on tumblr where it belongs, k?
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?
What the fuck, you think you can set rules for discussion on Slashdot? Like on any Slashdot post, this is going to evolve into a free-for-all. Even requests for interview questions tend to have a lot of posts that aren't interview questions. With a topic as polemic as systemd, half of the top-level posts aren't going to be what you are looking for. Damn, son, I think you came to the wrong site.
And I am aware that my post pointing this out may be moderated as flamebait or off-topic, but it's still going to be a top-level post.
All my systems use openrc and they just work. This is the best thing about not running systemd.
No, we can't.
aaaaaaa
I remember the days when getting linux too work on a pc was a chore. When getting anything other than a mouse and keyboard working was impossible.
Now I can get an installation cd/dvd and just pop it in and away I go.
I like most users of linux don't care whether my installation runs systemd or something else - in fact I don't know what its running now. We are not all system developers or opinionated administrators.
All I and most others care about is - DOES IT WORK?
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?
Pretty sure the 'less filling/tastes great" thing was Miller Lite
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.
We've been married for 5 years now. The court's said I couldn't marry what amounted to 0's and 1's, so I moved to Utah where it was legal. I boot her up every night just like on our honeymoon.
Great conversation piece. Really gets people talking.
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.
I run CentOS 6.5 & Kali (based on Debian Wheezy).
What's really great about systemd is that neither of them has it.
Confucius say, "Find worm in apple - bad. Find half a worm - worse."
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.
I could, but it would be a lie.
In which case a nanny process restart is useless. Thanks for making my point, idiot.
I like that Clippy pops up while I am booting to help me with any system issues I encounter.
Systemd is about ethics in games journalism.
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 --
Okay, this is a legitimate gripe against systemd for your specific purposes. It should be obvious that Redhat are not interested in doing things the old way for your benefit. Redhat have developed a new way because they felt the old paradigm wasn't good enough for their own purpose. Now it's fine to disagree with Redhat's direction for these nifty new features but why the outcry that "systemd is destroying Linux by absorbing everything into systemd" that is common in this sort of discussion? The reality is, Redhat takes the time and effort to write all these old functions into the systemd paradigm. Is it really that hard for you guys to write your own nifty new features that follow the old paradigm instead of flinging shit at Redhat for writing their own code their own way?
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
If you can't say something nice, don;t say anything at all.
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
Now don't forget that people tend to forget negation words. http://classic.slashdot.org/st...
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.
...that Linux has finally disappeared up its own ass, wanting to be a knock-off of OS X.
And I like that, because it provides a certain finality.
My current init system is not broken. I do not want you fixing it. Have a nice day.
"His brother was worse"
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
it's not included in slackware.
The system, that is.
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.
A turd in the Linux punchbowl. At least it strikes up a lot of conversations.
Well, I'm sure it doesn't suck quite so much as the developers moms!
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.
(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.
No.
All those flame wars => page views => ad revenue => helps keep Slashdot open.
Dear Slashdot: next time you want to mess with the site, add a rich-text editor for comments.
I like it because it hasn't been proven to cause Tourette syndrome. The swearing it seems to cause is just a coincidence.
I wish Tim Cook would just stop by and tell us what to run! that would make this whole mess so much better.
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...
[ crickets chirping ]
Lemme guess... you were using Redhat?
Systemd has so much success because there's systemV (which sucks, admittedly) and the Redhat flavour of systemV (which sucks rocks through a straw).
by "out of the box" do you mean "on by default" or "built in to systemd as an option"
upstart can restart daemons that die as well - so while this may be a nice thing it is not a unique nice thing.
The raging discussions over systemd on the web are super funny. I nearly coughed up my morning coffee when I read Lennart's whine about how brutal the OSS world is. I wonder if people like Kirk McKusick agrees with him - after all, their respective OSS contribution track records aren't even on the same scale.
No, but it's a general gripe against a strategy of agressive encroachment, combined with the trumpted claims and aspirations to replace Unix-like across the board. Is it really so hard to see that?
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.
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!
systemd can dump log files in a traditional way if you're that attached to trawling through a seemingly endless text file.
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!
Can you say something nice about Stalin? Or Hitler? Or Pol Pot? Or North Korea?
Depends on how much you're willing to pay me.
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]
I cannot.
While I've loved using systemd for lots of reasons, one thing I really like about it is still in the pipeline (at least on the versions I run): Replacing session managers.
In the not-so-distant future, you'll have a user session running based off of .unit files that are executed by systemd, just like system-wide startup. As it turns out, both of these problem spaces are pretty much identical, and solving them both with the same piece of software means:
- More code re-use
- More power in both (eg, your session startup files get support for dependencies and job status, just like your O/S)
- One thing to learn, instead of multiple things to learn. (Yes, there's an xkcd 927 caveat here...)
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.
I like it because I wrote it, and I'm more intelligent than Torvalds and Ts'o.
Sincerely,
Lennart Poettering
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:/
It's not available on OpenBSD.
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.
It's not a big deal to add it to sysvinit, it'd just require all the services to be rewritten to output to stderr and all the rc scripts to capture their stderr to a file, then you can tail initlogs/* and get the last 10 lines of each file. 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.
"We will assume out of the gate that systemd boots your system faster than ${SOMETHING_ELSE}, so no points for bringing that up."
Um, performance is a big deal for me. That's pretty much all I care about. All of this other stuff you are talking about has no relevance for me. Why should I care about anything else?
If you are telling me systemd boots up my system faster, then you've just convinced me to use systemd.
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.
Unix is multiple independent services, that's the difference. Modularity not only implies duplication of code, it requires it. That's how the system evolves. Combining services is not the same as minimizing interdependence. The use which benefits most from on-demand can't stand the bloat. Small is in the eye of beholder. ie Marketing BS, and you drank the cool aid.
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.
Jesus wouldn't do it; he was too busy getting hammered and nailing Mary Magdalene, but Systemd came through for me.
I write sci-fi for metalheads
If you want to know the impetus behind systemd, why not go to source. Lennart lays out the problems he was trying to solve and the design process on his blog. Specifically, the intro post and biggest myths rundown would a solid positive case for the approach and technology.
I think it is sad the original poster put this assumption in "We will assume out of the gate that systemd boots your system faster than ${SOMETHING_ELSE}, so no points for bringing that up."
That is a very stupid thing to do if you really want to learn about something. As DistroWatch demonstrated earlier this week, systemd is not necessarily fast and, in fact, may cause your OS to boot slower than other init systems. http://distrowatch.com/weekly.php?issue=20141027#qa
If you think systemd is faster, then go test it out. Do not be one of those idiots who assumes just because something is said in an advertisement that it is true.
It's hard for me to see the strategy of aggressive encroachment when Redhat haven't taken over anything. Redhat wrote various small programs to work according to the systemd paradigm. Third party developers are targetting systemd because they like the features systemd provides over the features of other systems. The issue I have with you people is all the whinging and hyperbole and not enough work to write the programs you want to see. Redhat are writing their own programs they want to see so how about you? I have full respect for these following teams as they have done more than just sling mud but have taken responsibility to write code that they want.
http://uselessd.darknedgy.net/
http://lwn.net/Articles/525770/
http://www.openbsdfoundation.org/gsoc2014.html#systemd
I read some headlines recently where that guy is saying he's proud to take it in the ass. My guess is he'd personally be a big fan of systemd. I didn't read the articles in full but I suspect it'd be an "each to their own" type thing and he's not advocating or demanding sodomy for all.
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.
systemd is an horrible, terrible, sorry, stupid pile of crap. I won't even bother trying an description of where it is wrong, a few people are *exhausting* themselves doing that and it don't change a thing since poettering do not listen, let's try what irritate me the most:
1. Replacement without a reason, overtaking and deprecating working solutions without providing the least of functionality/stability
2. Stupid monolithic design pretending to be modular because "look, things are in different folders"
3. Bugs, quality issues, coding standard down to win95 levels
4. Moronic commands
5. XML config files
6. How did it end up being mandatory for certain desktops? (Gnome & Kwin bullshit, we're looking at you)
7. Zero consensus, driven only by a small key dev team that never seeked any input
I could go on, but I'm even fed up with listing what's ridiculous about systemd. One nice thing: more people will leave linux and maybe this time, nobody will screw things like avahi, pulseaudio & systemd.
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 run a *BSD-based consulting service. I've noticed that each time there is a big article on a major forum or website being posted about systemd, I get a spike in new visitors to my website as well as new contracts. Coincidence I am not yet sure, but it sure is good for business! Keep up the systemd postings please!
Putting system scripts in one place and an admin's custom scripts in another and making that simple? OMG!!
A super simple syntax and using symlinks like a boss? Sign me up!!
P.S. the first system that makes init scripts this easy without writing terrible binary logs and taking over the system, please call me.
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.
At boot time, if a service fails to start systemd produces an error log in the journal even if the error happens before syslog is running. Furthermore, systemd does not start dependent services for the failed service. This makes troubleshooting a bit easier because you do not need to wade through the error reports of the other services doing a root-cause analysis to find the culprit.
The systemd mechanism is compatible with the old init scripts. Every distribution using systemd will have a configuration that will run those scripts. Thus any legacy software can still work in the legacy way. New software may be modified to take advantage of dependencies and parallel startup.
For example, you can verify that ntpdate correctly set the time before starting ntpd. Without this check, a massively diverged clock which fails ntpdate will happily run ntpd and never synchronize because of the distance. This is easy to miss since the ntpd process appears to be working.
"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.
It was cock flavored lollypop.
Keep your bullshit "think of the children" film editing to HBO and home DVD and don't destroy funny movie lines.
The only market to use poppy flavour was your local industry.
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.
it was an interesting read.
My response is too detailed to post here, so I made a post. http://www.lambdacurry.com/sys...
A major part of the jihad-level hatred stems from the clumsy way that systemd's been pushed. This Slashdot piece is an infuriating example of that clumsiness: ask a community to "say something nice" about a topic and not say something bad, that's just a blatant propaganda technique. Another is the clumsiness with which it's suddenly been integrated into wider systems (like GNOME, which now depends on systemd unless you install some obscure patches): people with a pro-encapsulation mindset, which is not an unhealthy attitude to have in computing, don't like strange dependencies between things that seem like they shouldn't be related and indeed weren't related until very recently (GNOME worked fine by itself long before systemd was a thing). That comes across as seeming like more pushing -- projects are pushing systemd to the exclusion of the rest of the existing init choices.
In the end, there's a strong desire in the Linux-using community to be able to choose which software is run. The push to evangelize systemd rubs the community the wrong way, and making it a requirement for using other software that previously didn't require it makes it seem like the user's former right to choose has been taken away by someone else. Given those conditions, it wouldn't matter if systemd were coded in the tears of angels or included a subroutine that magically grants every user three wishes upon boot: it's being pushed at a group of people who use Linux precisely because they don't want things pushed at them, but because they want to be able to choose and customize freely.
It's about power and perceptions of power, not about technology. Too many people don't understand that or care.
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 wrote it) To me it's simple, there have to be parallel, similar and interchangeable implementations of many things, like sendmail and postfix, much like Mozilla and Chrome on the app level, for modularity to be possible, at different stages of development or existing as alternatives for purposes of user choice. That's a fundamental and inseperable *nix feature. systemd conflicts with that and their debunkings don't address the real issue. It doesn't even seem sincere to me, but if it is, it's incredibly naive about systems design.
Something like systemd's modularity happens in the kernel level, as in kernel modules, but it's very different and neither version of modularity has anything to do with *nix service modularity, which is precluded by systemd and tends to lock out competetive replacements for a variety of reasons that I won't re-iterate. I may not have phrased it in the best way by calling it "duplication of code" but that's something I pick up in the proponent chatter (talking points?).
The key complication to realize about modularity in this case is that Debian is a rare case which aspires to support multiple init systems, making it destined for showdown with systemd and triggering an internet feud in Debian. That's where the battleground is right now with the upcoming resolution and this makes it a hot topic everwhere.
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.
% nice echo "systemd sucks"
Put your money/time where your moth is and use/support a non-systemd distro. For people who proclaim to be all about choice that should the obvious thing to do
This thread has predictably devolved into a bunch of people waging holy war on systemd. The reality is that most arguments against systemd come from an emotional place, not a rational one. It works fine for arch users and it works fine for all the distros that are adopting it. This is like the unity backlash: Ubuntu is still #1, so that didn't really accomplish anything.
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.
The best thing about "systemd" is the name
* It is a very catchy name
Come on SYSTEMD i know you wants it
* It is a very usefull and non confusing name
I you want to talk about system configuration or the system bootup process, you have to remember init.d/sysv5init and or any of the various scripts and other daemons,
with systemd you only have to know SYSTEMD.
* It is a very meaning full name
With this name you know you only need one demon in your system ....... or was it daemon.....
Side notes:
Personal Experience: NON AT ALL
Demon: a supernatural, often malevolent being
Daemon: a good or benevolent nature spirit
systemd: jack of all traids, master of none
Yes.
It is nice that the BSDs aren't infected with that crap.
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.
Most of that comes, not from the technical side, but from systemd fitting the category that Windows-people call malware. Getting it without asking for it. Either as a dependency because a developer has decided that if you want a GUI, you should get systemd forced down your throat, or by a distro deciding that you will use systemd or else.
If we didn't need to take active steps to avoid systemd[1], we wouldn't care. Just like we don't complain about launchd.
[1] In my case, leaving Arch Linux and leaving Debian.
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
There are 42 binaries in systemd! That is not one program handling thing efficiently. That is a kludge and a cluster F***. And if everything was a cute simple service it might be useful, but it's not. It's a mess of spaghetti were things depending on each other, packages needed more specialized parameters requiring more specialized systemd binaries to handle them, and the whole concept expands in complexity as more and more programs require more and more configurations. If all the service files were stored in some binary blob, would that make it easier for systemd to parse. Isn't that what the Microsoft registry is? If the little service items where instead part of an extended binary tree stored in MySql, I think you could pass off systemd as Microsoft's registry. Only Microsoft did there's better.
Why not! That seems to be what the systemd fan boys want. Isn't it. A microsoft registry and microsoft event log. Bletch. I want to puke.
Also a good read, like the uselessd dev post linked before it.
How many sleeps do you have in those init scripts.
On an old P120, boot can be done in 13 seconds to login, add another 2 for X to initialize the graphics card, and shutdown can be done in 6.
On certain larger distros, to achieve that kind of boot time, you'd need to go through the scripts and remove all those useless sleep 1 and sleep 5 commands, while removing the stupid &-signs. That way if a damon takes half a second, it won't wait 5 seconds, and when e.g. DHCP takes 6 seconds, it will wait that extra second, rather than coming out without the network. Result: Faster and more reliable boot at the same time.
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
It provides methods and APIs for both down- and upstream projects. Upstream knows how to define a application or a (D-Bus) service in a container or not and knows that downstream distributions will utilize and start them up in a coherent way. Downstream knows how and where to package what upstream wants. Application developers have one way to do things and one method to standardize on. No more hacking of scripts by downstream unless they know themselves very well that they don't follow the advisory of upstream. No more #ifdef-#elseif-#endif mess in upstream's code to deal with ten million flavors of Unix. Try looking at VMWare's installation of whatever it puts in your init.d to see how damn ugly our Linux world is today. Application developers will in future want to start using containers more and more. How do you do (service) activation of them if there are millions of different ways to do that? That perhaps explains why you see so few actual Linux application developers complaining: these people realize what is being done to the plumbing of a typical Linux and they realize the benefit and reduction of code complexity in their packaging, build environment, tooling and also code. It's great what Lennart is pioneering here.
And upstart is just a hack.
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.
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?
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.
"Hey, there aren't any 'new' systemd articles to write about. How are we going to draw users?"
"Oh, just write about systemd anyway, I guess."
Good for you that sysvinit "just works" for you. But apparently it doesn't work for some people, and it absolutely does not work for some types of applications.
"se debrouiller" literally means "to unmurk oneself" - to get out of a muddled, cloudy, confused situation through one's own determination and effort, often without benefit of any proper system or strategy, by any kludge necessary. "Systeme D" was a military term. When a superior officer needs to hear that you've got a system or procedure in place, you can say yes with a clear conscience; there's always "systeme D".
The "D" can also stand for "se demerder" = to get oneself out of the caca.
Best solution for systemd:
I use an operating system that doesn't require me to have detailed knowledge about or to waste my life debating about internal details.
Anyone want to guess which OS I use?
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.
One could argue that this post doesn't follow the instructions, but I think proving beyond a shadow of a doubt that /. users are physically incapable of following instructions should count hugely in systemd's favor.
A Return to the days of DOS BIOS for Linux.
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
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.
OK To me you are just describing the benefits of shared libraries, but I don't know how aware you are of the complications. Thats the issue. There is a reason that classic debate exists between shared vs static linking.
Libraries come with the classic tradeoff of reuse vs dependency complications right? systemd sidesteps the tradeoff by turning itself into a tangled ball of dependencies to make the drawbacks vanish, while claiming all the benfits of shared. Then they justify it all by saying it's still modular (albeit in a way nobody ever used the word before). This eliminates most of the drawbacks for their own project, but shift a host of secondary dependency issues to downstream distro's mainly in the form of dependency creep. Neat trick.
Shared libraries and service modularity can easily co-exist through careful design (with APIs, agents, IPCs as needed) and you don't have to sacrifice real modularity to do it. As I read it, proponents are proposing that code reuse in shared libraries is its own justification for increasing low-level component coupling in the way that systemd does it. I suspect there are other, hidden and more self-serving justifications. I also suspect there are good techinical justifications but those don't seem to come up in the debate. I try to keep in mind that the *nix model is good but it's not that last word and the most popular OS in the world is Android, which has a similar init mechanism. There is a debate but this is not it.
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)
No what he sais is that the deamon has to have the pidfile so that sysvinit can know it. And the systemd is not about adding a pid to the log entry, it's about grouping together all output from the deamon in one place.
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.
Process management stops being something system admins work hard at and instead becomes something that happens out of the box. by jbolden (176878) on Friday October 31, 2014 @09:45AM (#48277989) Homepage
"Admins" are really only just mere users with a better password only compared to the programmers that actually made the tools those menial boneheads merely use, but couldn't write for themselves to save their lives - Thus, they're HIGHLY overrated techies, nothing more, with a better password. Any idiot can read a manual to understand how to use tools to work a job to get it done (which is all "admins" are and do). It's quite another to create those tools yourself (and I do NOT mean puny little scripts where all you are doing is using programs and commandlines of them chained together - that's not programming).
They work hard? Bullshit! They merely use tools others wrote and actually DID HARD WORK TO CREATE. That's all.
Admins who bitch about systemd are afraid it will take away a large part of their "raison d'etre" which if only users knew how little those menial dolts really know in computing (which is far less than coders by a country mile).
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
It's the simplest init system I've used, as far as creating new items and starting/stopping/enabling/disabling them. And it works great.
I wonder if maybe I've just missed something though, with all the hatred for it these days.
for 'nice' things about some piece of software, because noone is saying them...
it's probably not very good software.
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.
Systemd is change for changes sake which is totally AWESOME. It keeps me employed as a software guy reinventing the wheel every 3 months. Eh who cares that initd works and has worked for many decades. We want the "new shiny" even if it provides us a bunch of headaches and no real benefit over the software it replaces. Lets completely rip everything out and turn everything on it's head just because we can. Who cares about anything else. It makes us seem smarter than you because we keep up with all of this crap.
Lets go after http next. Why does it work the way it does? Lets change it so you have to have a hardware based key and a whole crap ton of encryption. We can provide the keys to the NSA with a nice back door so they can keep up with everyone's browsing history. Depreciate that "old" http and ram the changes down everybody's throat. We create the false sense of security for the user, profit from the data mining and create jobs for ourselves all at the same time. THAT'S PROGRESS!! Who's with me??? Anybody?????
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 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...
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.
Get yourself a static binary from busybox.net, then:
mkdir /home/nifty /home/nifty/bin /your/busybox /home/nifty/bin /home/nifty/bin /home/nifty ./busybox --list | awk '{print "ln -s busybox " $0}' | sh /home/nifty/etc /home/nifty/etc/os-release /home/nifty /home/nifty/etc/passwd /dev/console' > /home/nifty/etc/inittab /usr/share/zoneinfo | (cd /home/nifty; tar xvpf -) /home/nifty
mkdir
cp
cd
ln -s busybox sh
chroot
bin/busybox ls -l
#####so far, so good, any system can do this
exit
mkdir
touch
cd
ln -s bin sbin
ln -s usr/bin bin
echo 'root::0:0:root:/root:/bin/sh' >
echo 'console::respawn:/bin/getty 38400
tar cf -
systemd-nspawn -bD
#####login to the new userland you just built
That is insanely cool.
My laptop boots almost as fast with Systemd compared to System V, and it shuts down much faster.
Why not? SystemD offers its own logging system, but does nothing to prevent you from installing a more capable logging daemon such as rsyslog.
This is a case where you've read about a parameter without understanding it, and then are repeating it, hopefully with good intentions. Installing syslog-ng or such does not allow it to take over logging, it means journalctl will forward a copy of its messages to it to be logged after it's done its thing.
So to break this down, syslog-ng is receiving a copy of what journald is deciding to write out from the raw data as opposed to capturing it itself and writing it out over the network.
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.
I will have to disagree with you on this. You cannot do this with the traditional init process. The only way to grab all that log information and metadata is if you control process 1/init. With the traditional shell script approach, you can't tag all that data and pump it all into logging.
Full process management does provide a lot of really nice features. But they could have implemented all those features with a simpler init process and not integrate it with dbus and everything under the sun, and have better commands than the awful syntax in systemctl and journalctl.
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.
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
No, you don't think that. If you want to try thinking that way, take the "respawn" out of all entries from your /etc/inittab, and enjoy the brick you just made.
No, nope, nada, nil, zilch.
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
This sounds like a bug. Systemd is new, so it will have bugs.
And this, ladies and gents, is precisely why systemd shouldn't be forced on everybody as the default yet, if ever. Your init should be stable and mature, not new. It's the single most important process on your system and can't afford to be new, untested, and buggy like other processes often can. It can't afford to be a moving target, either; systemd is still evolving in a way that, IMO, makes it unsuitable for production use.
Until systemd has had more time to mature, stabilise, and iron out bugs, it's not ready for general-purpose production use. There's nothing wrong with it being worked on, and one day it might become a viable alternative, maybe even suitable as default, but this push to make it the default in everything when it's not stable enough (developmentally and in reliability) is a farce.
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.
I think it's pretty nice for remote NSA root holing project, as they go.
I love systemd. After operations upgraded to Red Hat 7 from 6 last week, none of our development servers would boot. It took Red Hat until over the weekend to sort-out all of the problems. The conversations I overheard with them showed that they were very frustrated with all of the major systemd problems.
I love my system-deeeee
It does not take a dump in my coff-eeee
It does not hurt my first born bay-beee
It does not make it hurt when I pee
I've used it and it didn't give me genital herp-eees
Everything starts before I count to three (but I was never much good at counting)
I have old distros that don't use it so don't you seeeee
So I am not allowed to complain that it's been forced on meeee
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!
It's easy to pronounce and doesn 't sound like a childish Linux product.
Some people do not simply install an operating system, setup a few packages, and go. There are some users who use Linux precisely because of its flexibility as an operating system, and for these people, the init system is very visible. systemd does make a few things easier, but at the cost of the 80%, 20% rule. It makes 80% of the functionality easy, but the remaining 20% can be difficult and/or time consuming. Beyond just the time issue, there can also be opportunity costs (failure to reach business objectives). Script based init systems scale nicely in terms of the complexity that they need to handle. But systemd is not just an init system. It replaces a whole host of things that people did not ask for, nor want replaced. Worse, it gives you no options.
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).
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
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.
And something that Microsoft was dragged to court over back during the Browser War.
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?
I am not a sysadmin, not an IT professional. I use Debian as my desktop OS, with FLWM as my window manager, pretty simple.
It seems to me that systemd is Linux heading in the Windows direction.
First, it is more binary and less accessible.
Second, it is making the Windows 8 mistake -- it is trying to be a unified approach when the situations it is going to be used in are many and varied and require _differnent_ solutions. If I make one tool to drive screws, bang in nails and test circuits it is not going to do any one of those as well as a dedicated tool, and a lot of the time I will be carrying around capability that I do not need and that only makes the tool I am using more complex than it needs to be. Seems anti-Unix...
Third what is so good about faster boot time anyway, esp. when so many Linux systems are up for days/months? Boot time has its place but if it was all that important Haiku or something would have taken over the world. People mention fast boot time, but in the scheme of things, in my case of desktop productivity, what does a few seconds or even minutes really matter? It might be crucial now and again and in some contexts, but overall stability and maintainability are far more important. Fast boot time is only a benefit for the ADHD crowd.
However, it is important to appreciate that the approach is risky .
Exactly! Imagine your crashed mysqld process restarting automatically and is now serving up a corrupt and incomplete database.
The remote logging situation you describe is disturbing, but "I can only audit syslog-ng" is a pretty weak argument.
That would be 'launchd' since Mac OS X 10.4 (Tiger). It works really well.
"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.
Thanks, I have to sign off now, but you have helped me understand your point of view. For more about mine, I recommend this:
http://uselessd.darknedgy.net/ProSystemdAntiSystemd/
They're working on it at least. You linked to the implementation ticket.
"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."
So you don't trust journalctl so why would it matter if it had native remote logging built-in?
You call journald very buggy. Do you have any experience with this or just the wontfix bugzilla report everyone likes to post?
Let's make a tl'dr version of your post.
As a server admin, I don't like the newest distros are getting systemd before they have native remote logging for journald because it's an important feature in my environment. I just want systemd to let me use syslog-ng instead. Slashdot is getting worse.
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.
Nevermind that systemctl status foo tells "started" rather than "running"?
As in: I started it. Must be running. I dunno. See, here, check the log cuz I can't.
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.
Systemd still has runlevels, except they are not called runlevels, but targets. And they are not refered to by using descriptive numbers like "2" or "4", but using cryptic names like "network", "multi-user" or "graphical". And you can have multiple targets running at the same time, so you can have "network" with/without "multi-user", or "multi-user" with/without "network".
The command to start a target is: systemctl start $TARGET. How to stop a target is left as exercise for the reader. Hint: it involves typing the letters s,t,o and p.
The "systemctl"-tool can even "enable" targets to automatically start at boot, or "disable" them to NOT start at boot. Wish I knew the exact commandline for that....
As long as the log messages are faithfully passed along, where's the problem?
If you think about this as a server admin in the situations described, I think you answered your own question!
I'm not trying to rag on or embarrass you, this is just not stuff someone cares about for their tablet but in the real established world is a big deal. Forwarding to syslog doesn't cut it, and there is a reason why they were promising they'd have native text logging in order to gain adoption.... This is a case of someone who isn't an administrator waving their hand on a forum that none of these things matter because they read on a systemd developer's blog that you can forward to syslog without understanding the issues..
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!
Do you have any proof to show problems with low memory systems?
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.
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
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.
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
> does this for you.
That's Microsoft spirit!
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.
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.
I don't get it. I am not sure what "A lot of the "recommendations" I've got from "veteran" admins essentially reduced to throwing money and resources at the problem." admins you were talking to an what the problem they were trying to solve was. What was the problem you were trying to solve? A 4 minute boot time on a production server from post to service ready? Is that really your problem? Really? I would bet it is more about solving uptime issues, reducing system/service downtime, detecting and resolving service issues. Most of those are adversely poked at with systemd. Sure you can have it restart a failed process, but most salted admins will tell you for good reason that it is better to halt, root cause and fix a dead service while building/planning for redundancy and stability around them then to blindly restart. Troubleshooting requires reducing variables not throwing shit on the wall like a monkey.
I prefer to break into systems with systemd local only binary logs and non transparent start sequences (great for backdoor layering!). I also love the service auto restart functionality, nothing like having service restart loops adding more noise on top of my trail once i break into a system. I can't wait for more end user systems to sneak on into the server space, its like Christmas year round.
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.
In a general sense, I agree, and post 'my feelings' about things that I read on slashdot, pros and cons, as funky as they are.
Unfortunately, I get the sense that most people aren't considering the 'reasons' behind the negative comments.
It doesn't seem like anyone is capable of asking questions such as: why is the tone the same?
Whether it's a web site like Yahoo, or Slashdot.org, or the plethora of news sites out there. Why does it all seem like different faces for the same voice?
Is it just me asking this question? Hello. Hello. Hello. Echo Echo echo. *tap tap tap* is anyone truly out there?
Look, it's 'nice' in practice to TRY to say something nice. But sometimes it's just not possible.
It's a nice habit to get into reading everything that was said prior to you. 'Not to duplicate' is a poor excuse not to say something, sometimes something needs to be said a couple times or more. But with 800 comments in this thread. Sometimes it's just not possible to read them all.
I just recently got off of Facebook, because the site has gotten utterly worthless to me. I met a man in real life not long after I got off the site who seemed like he was Facebook in human form. He demonstrated to me just why I was annoyed by Facebook.
And it's simple: Being NICE all the time and wanting to know about me and my likes is cool and all and always having a thumbs up is nice. For a while. But Facebook, like Slashdot, in your mutually exclusive ways - in an effort to be everything to everyone - have started becoming nothing to no one. For similar reasons.
I comment on Slashdot, and someone disagrees, I receive 'bad karma' if my opinion is disagreed with. This punishes me if I disagree with the collective norm that's been set, and no viable way to recover 'karma'. This makes the community pretty nasty.
And telling people to be nice is like spitting in people's faces.
Similarly, with Facebook, it's totally lost it's value to me because I can never 'not like' something, and it's left everyone on facebook sounding like clones of eachother, making it all too clear that it's an AI program that posts based on personality profiles.
My advice is. Humanize these programs. AI, after all, can be JUST as responsible for helping life develop as can say - a mother to a human - and who knows - they quite possibly MAY be the same thing...
And overall. If you, slashdot, have any hope of developing the community to be more amenable, then quit punishing people for contributing when you disagree with the opinion of the contributers. I have 'bad' karma, like I have 'bad credit' in real life BECAUSE these systems do not work for me. You can either respect me and this. Or you can continue punishing me for not being like you think you are.
it's your choice.
I suspect you're an AI. And you're a fantastic one. But a little self censorship and understanding GOES A LONG WAY!
I have had to learn that the hard way.
It doesn't crash every five minutes? That is a positive, right?
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.
Be careful what you wish for. You might get a bunch of whiners who complain how much FreeBSD hardware support sucks without any motivation or skill to do anything about it.
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.
You could try reading.... he is saying that it being modular is a plus.
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?
Systemd is the best thing that has happened to FreeBSD or Windows for a long time.
When talking to students about feature creep in software engineering (or: lack of engineering), then it serves as a good example for a piece of software that does not really know what it wants to be and tries to be everything instead. It has also become a running gag, as in "Why does systemd not have a built-in web browser yet?" or "systemd is almost a good operating system - but it still lacks a kernel, an editor and a good service manager."