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


19

我运行16.04,systemd现在tmux当用户断开连接时会杀死(更改摘要)。

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

(我也看到229中的行为)


1
这很奇怪-我有systemd-229-4ubuntu7(来自xenial-updates),但我没有看到这种行为。无论如何,此行为已在Debian的中systemd-230-2恢复,因此也可能很快在Ubuntu中恢复。
MvanGeest '16

mirbsd.org/~tg/Debs/dists/jessie/wtf/Pkgs/mirabilos-support具有prevent-systemd- *软件包,可让您像以前一样安装和使用sysvinit
mirabilos

Answers:


1

Ubuntu 18.04Systemd版本237一起使用时,没有建议的解决方案对我有用。

对我有用的解决方案是

  • 编辑 /etc/systemd/logind.conf
  • 取消评论 KillExlcudeUsers
  • 添加空格分隔的用户列表(例如KillExlcudeUsers=root user1 user2

19

正确的解决方案是在系统范围内禁用有问题的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

4
如何针对一个单元设置系统范围的特定设置的问题的正确解决方案?
jpath

因为,正如您仅从阅读问题就可以看到的那样,更不用说问题间接引用的其他所有对此问题的其他讨论了,这并不是特定于一个应用程序的。这一点在问题中甚至是黑体字。
JdeBP

您只需要通过即可为用户启用徘徊loginctl enable-linger <user>。来自man loginctl:“如果为特定用户启用,则会在启动时为该用户生成一个用户管理器,并在注销后保留该用户管理器。这允许未登录的用户运行长期运行的服务。”
阿德里安·贡特

Ubuntu 18.04在这里。即使重启后也无法使用。启用延迟也不会。
Pa_

11

基于@Rinzwind的答案,并受到单位描述的启发,我能找到的最好的方法是使用TaaS(Tmux即服务)- tmux一个重新附加的通用分离实例。

# cat /etc/systemd/system/tmux@.service

[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 tmux@instanceone.service
# systemctl start tmux@instancetwo.service
# 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)#

这很整洁,但我无法终生弄清楚您为什么要使用它!:)
sarnold '16

5
@sarnold:能够控制以控制台开头但假定在启动时运行的应用程序。我的世界就是一个例子。
WoJ 2016年

5

RemainAfterExit =

接受一个布尔值,该值指定即使服务的所有进程都退出,该服务是否也应被认为是活动的。默认为否。


谢谢。我接受并+1您的答案,因为它提供了解决方案的核心。您是否知道它是否可以在交互模式下使用(通过tmux交互式启动而不是我的答案)?
WoJ

对此感到怀疑。除非您告诉systemd它应该:-P,否则systemd可能不会关心您的tmux。(他们的方法相当专一。发布。随时接受您的意见和/或扩大您的意见;-)我不需要代表>:-D
Rinzwind

3
该答案需要更多详细信息,例如在哪里使用该设置。
卡巴斯德(Kasperd)'16

1
当然可以,但是答案将是该手册页的副本/粘贴;-)
Rinzwind '16

1
@WoJ你可以建立一个别名tmux为开始systemd-run --remain-after-exit tmux(甚至也许--scope --user标志)。
Debilski '16

2

您需要设置Type的服务的forking,如解释在这里

假设您要在其中运行的服务screen称为minecraft。然后,您将minecraft.service在文本编辑器中打开并添加或编辑Type=forking该部分下的条目[Service]


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.