如何使用 systemd > 230 运行 tmux/screen?

如何使用 systemd > 230 运行 tmux/screen?

我运行的是 16.04,当用户断开连接时systemd就会终止(tmux变更摘要)。

有没有办法用230运行tmuxscreen(或任何类似的程序) ?systemd我阅读了所有关于该行为的利弊的激烈讨论,但没有提出任何解决方案。

(我也看到了 229 中的行为)

答案1

正确的解决方案是在整个系统范围内禁用有问题的 systemd 行为。

编辑/etc/systemd/logind.conf你必须 sudo,当然)并设置

KillUserProcesses=no

您也可以将此设置放在单独的文件中,例如/etc/systemd/logind.conf.d/99-dont-kill-user-processes.conf

然后重新启动systemd-logind.service

sudo systemctl restart systemd-logind

答案2

根据@Rinzwind 的回答并受到启发单元描述我能找到的最好的方法是使用 TaaS(Tmux 即服务)——一个tmux重新连接的通用分离实例。

# cat /etc/systemd/system/[email protected]

[Unit]
Description=tmux default session (detached)
Documentation=man:tmux(1)

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/usr/bin/tmux new-session -d -s %I
ExecStop=/usr/bin/tmux kill-server
KillMode=none

[Install]
WantedBy=multiplexer.target

# systemctl start [email protected]
# systemctl start [email protected]
# tmux list-sessions

instanceone: 1 windows (created Sun Jul 24 00:52:15 2016) [193x49]
instancetwo: 1 windows (created Sun Jul 24 00:52:19 2016) [193x49]

# tmux attach-session -t instanceone

(instanceone)#

答案3

退出后保留=

采用布尔值来指定服务是否应被视为活动状态,即使其所有进程都已退出。默认为否。

答案4

根据https://unix.stackexchange.com/a/287282/117599调用tmux使用

systemd-run --user --scope tmux

也应该可以解决问题。

相关内容