Como executar o tmux / screen com systemd> 230?

Eu corro 16.04 e systemd agora mata o tmux quando o usuário desconecta ( resumo da mudança ).

Existe uma maneira de executar o tmux ou a screen (ou qualquer programa semelhante) com o systemd 230? Eu li toda a discussão acalorada sobre os prós e contras do comportamento, mas nenhuma solução foi sugerida.

(Eu vejo o comportamento em 229 também)

RemainAfterExit =

Recebe um valor booleano que especifica se o serviço deve ser considerado ativo mesmo quando todos os processos saírem. Padrões para não.

A solução adequada é desabilitar o comportamento do sistema ofensivo em todo o sistema.

Edite /etc/systemd/logind.conf ( você deve sudo , é claro) e defina

 KillUserProcesses=no 

Você também pode colocar essa configuração em um arquivo separado, por exemplo, /etc/systemd/logind.conf.d/99-dont-kill-user-processes.conf .

Em seguida, reinicie o systemd-logind.service .

 sudo systemctl restart systemd-logind 

Baseado na resposta do @Rinzwind e inspirado por uma descrição de unidade, o melhor que eu consegui encontrar é usar o TaaS (Tmux as a Service) – uma instância genérica do tmux se reconecta.

 # 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)# 

Você precisa definir o Type do serviço como forking , conforme explicado aqui .

Vamos supor que o serviço que você deseja executar na screen seja chamado de minecraft . Então você abriria minecraft.service em um editor de texto e adicionaria ou editaria a input Type=forking na seção [Service] .

De acordo com https://unix.stackexchange.com/a/287282/117599 invocando o tmux usando

 systemd-run --user --scope tmux 

também deve fazer o truque.

Intereting Posts