The initialization software systemd has now been integrated into most popular Linux distributions, including the latest versions of Ubuntu. But a change in systemd 230 alters the way Linux and other UNIX-like operating systems have worked for decades, and some Linux users aren’t pleased.
Systemd now kills processes when you sign out
Thanks to a new change, systemd will automatically kill a user’s processes when that user logs out. Previously, it was possible to start long-running processes that remained running, even when you signed out. You could use the tmux, screen, or nohup commands to ensure that a process remained running. Systemd will now kill all those leftover processes to clean things up.
This change is being debated in Debian’s bug tracker, and on Fedora’s mailing list. On Fedora’s mailing list, systemd’s Lennart Poettering explained that systemd is designed to be “a process babysitter.” Red Hat’s DJ Delorie expressed why he and some other Linux users are frustrated:
“It’s becoming a user nanny instead. I wish it would stop trying to enforce its ‘my way or the highway’ approach to system rules. I’ve been playing whack-a-mole trying to keep up with all the tweaks I need (assuming I can find them) to let me do what I want to do with my own machine.”
There’s a new secret handshake
Of course, systemd provides a way to disable this behavior and keep processes running, if that’s what you want.
To do this, a system administrator can set the “KillUserProcesses=no” option in systemd’s configuration file at /etc/systemd/logind.conf. Linux distributions could also choose to disable this systemd feature for all their users, which is what some Debian and Fedora users are asking for. In both cases, the feature would be disabled systemwide.
If just a specific user wants to run processes that are left alone by systemd, that user has to enable “lingering” for their account, with the systemd-run command preceding the tmux, screen, or nohup commands.
So, if you end up using a Linux distribution with systemd 230 or newer that has this option enabled, you’ll need to run tmux, screen, and nohup commands in a systemd-specific way. It would make sense for these tools to become systemd-aware to negate this new secret handshake, but they aren’t, and users will therefore need to use this new workaround.