我理解为什么 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 重新连接。;)
要修复此问题,请执行以下所有步骤:
- 对 进行以下更改
/etc/systemd/logind.conf
:
KillUserProcesses=no
KillExcludeUsers=root YOUR_USER_NAME
...然后重新启动 systemd-logindsudo systemctl restart systemd-logind
- 使用以下方式为您的帐户启用延迟:
loginctl enable-linger YOU_USER_NAME
我最初只启用了 lingering 和KillUserProcesses=no
,但我的 tmux 仍然被杀死。只有在我修改后KillExcludeUsers
(感谢https://askubuntu.com/a/1097134/59971)我才能安心地继续我的神经网络训练。