如何防止 systemd 杀死我的 tmux 会话?

val*_*dil 2 arch-linux tmux systemd

我明白为什么 systemd 在我登出时想要杀死我的东西。我想为 tmux 做个例外。这是我到目前为止所得到的:

/etc/logind.conf

[Login]
KillUserProcesses=no 
Run Code Online (Sandbox Code Playgroud)

.xinitrc

loginctl enable-linger $USER
Run Code Online (Sandbox Code Playgroud)

还有别名...

$ alias tmux
tmux='systemd-run --scope --user tmux'
Run Code Online (Sandbox Code Playgroud)

各种谷歌搜索告诉我,每一个都应该独立工作。从来没有。我可以使用其他一些设置来保留我的 tmux 会话吗?

Cha*_*tha 6

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

我刚刚在 askubuntu 上发布了以下答案,但我将在此处重现,因为这将成为更多基于 systemd 的发行版的问题:

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

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

  1. 对 进行以下更改/etc/systemd/logind.conf
KillUserProcesses=no
KillExcludeUsers=root YOUR_USER_NAME
Run Code Online (Sandbox Code Playgroud)

...并使用以下命令重新启动 systemd-logind sudo systemctl restart systemd-logind

  1. 为您的帐户启用延迟:
loginctl enable-linger YOU_USER_NAME
Run Code Online (Sandbox Code Playgroud)

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