我如何阻止 systemd 终止我的 tmux 会话?

我如何阻止 systemd 终止我的 tmux 会话?

我理解为什么 systemd 会在我注销时终止我的东西。我想为 tmux 做一个例外。以下是我目前得到的结果:

/etc/logind.conf

[Login]
KillUserProcesses=no 

.xinitrc

loginctl enable-linger $USER

还有一个别名...

$ alias tmux
tmux='systemd-run --scope --user tmux'

各种谷歌搜索都告诉我,这些都应该单独起作用。但从来没有。还有其他设置可以用来保留我的 tmux 会话吗?

答案1

systemd 会这样做,这是设计使然。您还可以在日志 (do journalctl -xe) 中看到它是如何终止您的进程的。

我只是在 askubuntu 上发布了以下答案,但我将在这里重现,因为这将成为更多基于 systemd 的发行版的一个问题:

事实证明,当您的会话结束时,systemd 会终止您的所有用户进程,例如当您终止 SSH 登录时,因为您认为您稍后会使用 tmux 重新连接。;)

要修复此问题,请执行以下所有步骤:

  1. 对 进行以下更改/etc/systemd/logind.conf
KillUserProcesses=no
KillExcludeUsers=root YOUR_USER_NAME

...然后重新启动 systemd-logindsudo systemctl restart systemd-logind

  1. 使用以下方式为您的帐户启用延迟:
loginctl enable-linger YOU_USER_NAME

我最初只启用了 lingering 和KillUserProcesses=no,但我的 tmux 仍然被杀死。只有在我修改后KillExcludeUsers(感谢https://askubuntu.com/a/1097134/59971)我才能安心地继续我的神经网络训练。

相关内容