Stop spreading this lie. Linux has a more graceful shutdown process than Windows ever did. It doesn’t abruptly kill everything.
Unless you told him to do so. 🙃
While the meme is very funny, it is technically incorrect. Linux has two major ways of terminating a process. When Linux wants a process to terminate execution (for whatever reason) it first sends the SIGTERM signal to the process, which basically “asks” the process to terminate itself. This has the advantage, that the process gets the chance to save its state in a way, that the execution can continue at another time. If the process however ignores the SIGTERM signal at some point Linux will instead forcefully terminate the execution using the SIGKILL signal. This represents what the image shows.
Before someone gets mat at me: I know, that there are like 50 more Signals relevant to this, but wanted to keep it simple.
Does the “SIG” stands for “Signal”?
I guess, but would have to look that up too (there are quite a lot of signals starting with SIG, so it would make sense that it is this way)
Windows:
- program refuses to shutdown
- system: okay, guess you don’t need your computer to turn off anyway
There is a windows registry hack to set the shutdown wait time for 1s and that did fix it for me. But every update they turn it back to unlimited.
(I ended up installing Linux, I only have the dnf5daemon server holding the shutdown up for atnost 5min now. But I haven’t tried to fix it)
Which is why in my Windows days I got a habit of turning computer off with Windows + R --> shutdown -s -f -t 0
Windows just works, my ass :)
I mean, also look at how windows installs programs. Its like a 100 step process taking several minutes, because just putting the files where they need to be is just too simple.
Or the uninstall program, cant just remove the files, no… Need to run full installer backwards to remove all the registry entries and even reboot the system to get rid of it all.
Uninstallation on Linux needs to do the equivalent of removing registry entries (settings) as well. Neither prices typically takes long. Windows does require more reboots, but you can typically get away without rebooting still.
Linux settings are stored in files in your home directory, and uninstalling typically leaves those files intact.
One of the actual (many) reasons that drove me from Windows. Over the years it became so dirty to have so many old files and registry entries that were abandoned by their respective uninstallers that I became wary of installing anything at all, and that’s not the feeling I want with my personal computer.
Windows task manager:
Let’s play a whack a mole game where the app you’re trying to kill constantly moves up and down a list by default! Enjoy!
Just sort by ram size
I killed-9 but if I’m done I’m done and just calling a hard soft reboot with REISUB and if you know you know
Lolol I just needed that yesterday
Graceful like closing a laptop and putting it in a backpack only to have windows refuse to shutdown and become a heater until it cooks the battery and ruins the screen…
Isn’t that more of a PEBCAK?
Nope. Go read about the “modern suspend” a.k.a. S0ix horror stories. Totally the fault of Microsoft+manufacturers, happens in Linux and Windows.
Windows: If you can’t exit gracefully, I’ll make sure you never exit at all
Oh dear, my toe seems to have found the switch on my surge protector. I win.
Yup. Sometimes you like to fire a few shots manually just for fun.
Sudo htop
“I wonder how important this is….”
Nothing happens
Hmm
I once accidentally unmounted the system drive. You know what? Aside from some crash messages and a lost battery indicator, the system just kept going.
I finished my Zoom call just fine, finished what I needed to do real quick and then rebooted.
It all went back and was just fine.
A friend of mine has a Laptop, where you can easily pull out out the hard drive while the OS is running. We once did that and it worked kinda fine. After plugging the hard drive back in it continued to run like before.
Ironically it’s actually the opposite. Linux has signals, and with the exception of SIGKILL and I think SIGABRT they can all be handled gracefully. Windows on the other hand doesn’t have signals, it can only TerminateProcess() which is forceful. The illusion of graceful termination on windows is done by sending a Window close message to all of the windows belonging to a given process, however in the event the process has no windows, only forceful termination is available due to the lack of a real mechanism to gracefully terminate processes. That’s why the taskkill command tells you a process requires forceful termination when you run it against something headless.
You’re right about Linux but you’re wrong about windows. It is sent to the event loop in windows https://learn.microsoft.com/en-us/windows/win32/winmsg/window-notifications. It’s been a long time since it was my job, but you actually had to pass a certification that your application exited gracefully in response to these messages as part of the partner program back in the day.
Windows does, in fact, have signals. They’re just not all the same as Unix signals, and the behavior is different. Here’s a write-up.
You’re correct there is no “please terminate but you don’t have to” signal in Windows. Windowless processes sometimes make up their own nonstandard events to implement the functionality. As you mentioned, windowed processes have WM_CLOSE.
Memory access violations (akin to SIGSEGV), and other system exceptions can be handled through Structured Exception Handling.
TIL about the console signaling stuff, good to know. I am aware of SEH but that seemed a little too in the weeds for this discussion since that’s as you say akin to SIGSEGV
The NT kernel was all built to emulate object orientation (read Smalltalk, not C++) style message passing. That’s because it was the 90s, and it’s the new technology kernel.
So yeah, expect everything to have more flexibility sending data around, and no standardization at all so you can’t have any generic functionality.
sig bart
It also means the OS is in total control of the things it’s running. This goes for running programs, shutting down, and crashing. The only crashes I have on my Linux are when I use up memory, and I’m still convinced that even though everything looks seized up, if I left it for hours or days it would probably end up resolving itself. I’ve had some cases where the OS saw the program wasn’t going in a good direction fast enough and killed it.
Most linux systems have two OOM killers, one in the kernel that will execute as a last resort when your system is already frozen up, and one in systemd that should run earlier to prevent your system from freezing up. That one works sometimes, I think it does an okay job actually.
That’s fucked up
Plus, if something seemingly can’t be terminated with that, 99% of the time it’s a kernel level lockup (e.g. disk IO). At which point you only have 2 options: kill it via a kernel debugger or (the more likely scenario) perform a reboot.
In Linux you get zombie processes hanging around when things go wrong, and you can’t get rid of those.
Yes you can. You get rid of the zombies by killing the parent process.
they can be automatically moved to have parent 1 or something like that, so only way to kill them is a reboot. But personally I am yet to setup a stationary (uh, not a laptop) computer and see how it works for me without poweroff at the end of the day
They get moved to the init process (parent 1) if their original parent dies. The init process should always wait on its child processes so they’ll get cleaned up then. No reboot needed.
Once they’re zombies all they really exist for is to return an exit code for their parent - they’re no longer running.
Zombies are getting to be parents now?
Woke has gone too far, in my day they would have gotten a bullet between the eyes.
I think zombies go under kernel or “root process” by default now
/c/programmer_ignorance
This meme gets crustier and crustier every time I see it. It’s amazing after all these years people still post this.
Eh, it’s funny even if it’s inaccurate.
I kind of love it though it’s like tje fine wine of the internet getting worse and worse yet better and better with time.
Each repost adds another layer of artifact and grit until you can barely make out what the original even meant. It’s been screenshotted and cropped and saved and shared, on Facebook and Reddit and Xitter who cared? From phone to phone and site to site the pixels crumble day and night!
The colors fade, the text grows blurry, reposted fast, reposted hurry! Through Discord servers, Instagram feeds and Fedi-instance’s it spreads like mold, like digital weeds! One hundred times! One thousand more! The quality drops right through the floor! And yet we laugh and yet we share this crusty meme beyond repair!
So let it crumble, let it fray, this meme will live another day. For in its crust we find the truth, the internet’s eternal youth!
The image’s content is plain wrong. Waxing poetic about JPEG artifacts doesn’t make this image any more interesting or funny. It’s just dumb.
Isn’t that what
SIGTERMis? A request to gracefully shutdown processes.I bet the GUI environments also have their own mechanisms to indicate that the app needs to close, before whipping out the signals.
kill, and I swear to god if you’re still there when Ips, I’m getting out the-9alias murder="kill -9"Yeah, by default
killsends sigterm, and not kill the process at all.It’s the correct behavior, sending sigkill by default would be harmful. Now take a look at how
killallworked in Solaris (before it adopted GNU).
Systemd waits until the services terminate before shutting down
killall -9How’s that differ from
SIGHUP?Historical context, delivery, and handling.
HUP—hang up—is sent to indicate the TTY is closed.
TERM—terminate— is sent by request.What happens when received is usually up to the process. Most of them just leave the defaults, which is to exit.
They’re different signals. The default handling is the same - terminate - but they’re triggered by different things and (if the process handles them) handled by separate handlers.
In my experience it is more the reverse is true. If a program truly craps out on me in windows i could at least get the task manager to show / use it to terminate the offender or reboot, at least back when i still used it.
Meanwhile my bazzite task manager is notably not a native part of the OS and takes a few seconds to load, and if the system is in some sort of frozen screen state my only real recourse is hitting the physical force reboot button. The windows manager could sometimes recover from those.
Overall it is of course a much better experience compared to Windows regardless, but still. Everything being essentially modular pieces compiled into a system can evidently also have minor downsides.
While it is 100% understandable, that the lack of a graphical task manager is annoying, you are not completely without options. If you want to terminate a process you can easily type pkill -f process_name into your console. The process name doesn’t even have to be exact with the process name (as example the process name is signasignal_desktop, providing signal to the command would be enough to kill it).
Honestly, yes.
Linux lacks a native Task manager, and this is one of the “death by a thousand cuts” roadblocks that prevent its adoption.
A user must be able to launch a graphical tool to manage processes even if everything else froze. That’s just basic usability.
Can it be currently resolved with a terminal? Yes. Should it be resolved with a terminal? No.
ctrl-alt-f2 (or f3, f4)
this should switch away from graphical mode to a terminal.
log in kill whatever needs killin’
I have recovered many times from a broken window session in Linux by switching to a console with ctrl-alt-fN, logging in, and either killing the offending program or just rebooting gracefully.
In Windows my last resort before the nuclear power button is Task Manager with ctrl-esc or ctrl-alt-delete.
















