I run 16.04 and systemd now kills tmux when the user disconnects (summary of the change).

Is there a way to run tmux or screen (or any similar program) with systemd 230? I read all the heated disussion about pros and cons of the behavious but no solution was suggested.

(I see the behaviour in 229 as well)

share|improve this question
1  
That's odd - I have systemd-229-4ubuntu7 (from xenial-updates) and I don't see this behaviour. Anyway, this behaviour has already been reverted in Debian's systemd-230-2, so it'll probably be reverted in Ubuntu soon too. – MvanGeest Jul 24 '16 at 15:41
    
mirbsd.org/~tg/Debs/dists/jessie/wtf/Pkgs/mirabilos-support has prevent-systemd-* packages that allow you to install and use sysvinit as earlier – mirabilos May 10 '17 at 20:59
up vote 4 down vote accepted

RemainAfterExit=

Takes a boolean value that specifies whether the service shall be considered active even when all its processes exited. Defaults to no.

share|improve this answer
    
Thanks. I accepted and +1 your answer as it provides the core of the solution. Would you know if it is usable in an interactive mode (by launching tmux interactively, as opposed to my answer)? – WoJ Jul 24 '16 at 6:59
    
doubt it. systemd probably will not care about your tmux unless you tell systemd it should :-P (their approach to this is rather single-minded.... it seems like it is their way or no way.) You need a unit description like you posted. Feel free to accept yours and/or expand yours ;-) I dont need the rep >:-D – Rinzwind Jul 24 '16 at 7:06
2  
This answer needs more detail such as where to use that setting. – kasperd Jul 24 '16 at 8:50
1  
Sure but the answer is going to be a copy/paste of the manual page ;-) – Rinzwind Jul 24 '16 at 11:00
1  
@WoJ You can make an alias for tmux to start as systemd-run --remain-after-exit tmux (or maybe even with --scope --user flags). – Debilski Aug 2 '16 at 20:30

The proper solution is to disable the offending systemd behavior system-wide.

Edit /etc/systemd/logind.conf (you must sudo, of course) and set

KillUserProcesses=no

You can also put this setting in a separate file, e.g. /etc/systemd/logind.conf.d/99-dont-kill-user-processes.conf.

Then restart systemd-logind.service.

sudo systemctl restart systemd-logind
share|improve this answer
1  
How is the proper solution to a problem specific to one unit to set some system wide setting? – jpath Aug 13 '17 at 18:37
    
Because, as you can see from even only reading the question, let alone all of the other discussion elsewhere about this that the question indirectly references, this is not specific to one application. This is a point that is even in boldface in the question. – JdeBP Aug 17 '17 at 9:04

Based on @Rinzwind's answer and inspired by a unit description the best I could find is to use TaaS (Tmux as a Service) - a generic detached instance of tmuxone reattaches to.

# 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)#
share|improve this answer
    
This is neat but I can't for the life of me figure out why you'd use it! :) – sarnold Dec 9 '16 at 5:43
2  
@sarnold: to be able to control applications which start with a console, but which are suppose to be running at boot time. Minecraft is one example. – WoJ Dec 9 '16 at 11:59

According to https://unix.stackexchange.com/a/287282/117599 invoking tmux using

systemd-run --user --scope tmux

should also do the trick.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.