That’s why you launch them through systemd.
The constant nagging by you systemd people worked. I’ve written a unit that does what I need it to do. That was more annoying than I think it needed to be, but well… my solution didn’t work at all.
My computer has a problem where occasionally it will become completely unresponsive. (Mouse cursor doesn’t move. Keys have no apparently effect. Whatever app is running freezes. I think its a hardware problem with the graphics card, but I don’t know what. Logs at the time it freezes say “the GPU has fallen off the bus”.)
Anyway… I recently learnt about Magic SysRq. And I’ve been able to shutdown the computer from this unresponsive state with SysRq, R E I S U O
. Where as I understand it, the “E” tells processes the end nicely if they can; and then the “I” just ends them by force.
(At this point, I’m realising that the E
is SIGTERM, not SIGINT - so that screws up the relevance of my story; but I figure I’ll keep going anyway.)
The point is, I’ve been using key combo with a nice pause between each key, thinking there was some chance that processes might be ending gracefully. But when I tried it while the computer wasn’t frozen, the computer was able to inform me that the E and I commands were disabled. (I don’t know why.) So even though I wanted to give a nice “please end” signal, in the end that just wasn’t happening.
Interesting. Is this top answer accurate then?
https://stackoverflow.com/questions/31731980/handling-a-linux-system-shutdown-operation-gracefully
This is legitimately the best usage of this meme I’ve seen in years. Termination signals hnnngg
You are never guaranteed to be able to do anything during a crash. You are better off handling these kinds of edge cases in a recovery phase during the start of your app.
It’s not a crash. It’s a graceful shutdown. I expected that to also shutdown my app gracefully.
I’m actually trying to store the program state that hasn’t been persisted yet to disk. Good luck doing that after the next boot.
Persist everything to disk in real time. When the signal hits exit immediately.
Persist everything to disk in real time.
That’s the thing I’m trying to avoid.
Crash-only software. To be resilient you need some kind of ACID anyway which means that you can let go of your shutdown procedure and just send yourself SIGKILL instead.