WoJ Asked: 2016-07-24 14:37:07 +0800 CST2016-07-24 14:37:07 +0800 CST 2016-07-24 14:37:07 +0800 CST 如何使用 systemd > 230 运行 tmux/screen? 772 我运行 16.04,systemd现在tmux在用户断开连接时终止(更改摘要)。 有没有办法用230运行tmux或screen(或任何类似的程序) ?systemd我阅读了所有关于行为利弊的激烈讨论,但没有提出解决方案。 (我也看到了 229 中的行为) systemd 6 个回答 Voted Michael Hampton 2016-07-24T23:32:09+08:002016-07-24T23:32:09+08:00 正确的解决方案是在系统范围内禁用有问题的 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 WoJ 2016-07-24T22:58:40+08:002016-07-24T22:58:40+08:00 基于@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)# Rinzwind 2016-07-24T14:44:01+08:002016-07-24T14:44:01+08:00 RemainAfterExit= 采用一个布尔值,该值指定服务是否应被视为活动,即使其所有进程都已退出。默认为否。 phk 2017-04-13T13:42:48+08:002017-04-13T13:42:48+08:00 根据https://unix.stackexchange.com/a/287282/117599调用tmux使用 systemd-run --user --scope tmux 也应该做的伎俩。 Robin Hartmann 2018-08-03T12:23:30+08:002018-08-03T12:23:30+08:00 您需要将Type服务的 设置为forking,如此处所述。 假设您要运行的服务screen被称为minecraft. 然后您将minecraft.service在文本编辑器中打开并添加或编辑该Type=forking部分下的条目[Service]。 Best Answer fear 2019-11-04T02:09:13+08:002019-11-04T02:09:13+08:00 使用Ubuntu 18.04和systemd 版本 237,没有一个建议的解决方案对我有用。 对我有用的解决方案是 编辑/etc/systemd/logind.conf 取消注释KillExlcudeUsers 添加以空格分隔的用户列表(例如,KillExlcudeUsers=root user1 user2)
正确的解决方案是在系统范围内禁用有问题的 systemd 行为。
编辑
/etc/systemd/logind.conf
(你必须 sudo,当然)并设置您也可以将此设置放在单独的文件中,例如
/etc/systemd/logind.conf.d/99-dont-kill-user-processes.conf
.然后重启
systemd-logind.service
。基于@Rinzwind 的回答并受到单元描述的启发,我能找到的最好的方法是使用 TaaS(Tmux 即服务)——
tmux
一个重新附加到的通用分离实例。RemainAfterExit=
根据https://unix.stackexchange.com/a/287282/117599调用
tmux
使用也应该做的伎俩。
您需要将
Type
服务的 设置为forking
,如此处所述。假设您要运行的服务
screen
被称为minecraft
. 然后您将minecraft.service
在文本编辑器中打开并添加或编辑该Type=forking
部分下的条目[Service]
。使用Ubuntu 18.04和systemd 版本 237,没有一个建议的解决方案对我有用。
对我有用的解决方案是
/etc/systemd/logind.conf
KillExlcudeUsers
KillExlcudeUsers=root user1 user2
)